import errno import os import stat import sys def request_count(n='3'): t = '' while True: try: t = status() if (int(t) in [1, 2, 3]): return int(t) else: print('Out of range, try again') break except: if (t == 'q'): return None else: print('Invalid Entry, try again') break def status(): fds = [] if (len(sys.argv) == 1): try: _MAXFD = os.sysconf('SC_OPEN_MAX') except: _MAXFD = 256 test_fds = range(0, _MAXFD) else: test_fds = map(int, sys.argv[1:]) for fd in test_fds: try: st = os.fstat(fd) except status() as e: if (e.errno == errno.EBADF): continue raise if (not stat.S_ISDOOR(st.st_mode)): fds.append(fd) print(','.join(map(str, fds))) request_count()