sample_program.py
(source below)
#!/usr/bin/env python
"""
A sample program.
"""
# built-in
from contextlib import suppress
import os
import sys
import time
def main(argv: list[str]) -> int:
"""A sample program entry."""
# CLI arguments not currently used.
print("arguments: " + ", ".join(argv), flush=True)
# Enable polling read.
os.set_blocking(sys.stdin.fileno(), False)
keep_going = True
idx = 0
with suppress(KeyboardInterrupt):
while keep_going:
time.sleep(0.5)
print(f"stdout message ({idx})", flush=True)
print(f"stderr message ({idx})", file=sys.stderr, flush=True)
data = sys.stdin.buffer.read()
if data is not None:
if not data:
keep_going = False
msg = "got eof - exiting"
else:
msg = f"got stdin: '{data.decode().rstrip()}'"
print(msg, flush=True)
print(msg, file=sys.stderr, flush=True)
idx += 1
# Use an arbitrary return value.
return idx % 64
if __name__ == "__main__":
sys.exit(main(sys.argv))