17db96d56Sopenharmony_ci"""When called as a script, print a comma-separated list of the open 27db96d56Sopenharmony_cifile descriptors on stdout. 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ciUsage: 57db96d56Sopenharmony_cifd_stats.py: check all file descriptors 67db96d56Sopenharmony_cifd_status.py fd1 fd2 ...: check only specified file descriptors 77db96d56Sopenharmony_ci""" 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciimport errno 107db96d56Sopenharmony_ciimport os 117db96d56Sopenharmony_ciimport stat 127db96d56Sopenharmony_ciimport sys 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ciif __name__ == "__main__": 157db96d56Sopenharmony_ci fds = [] 167db96d56Sopenharmony_ci if len(sys.argv) == 1: 177db96d56Sopenharmony_ci try: 187db96d56Sopenharmony_ci _MAXFD = os.sysconf("SC_OPEN_MAX") 197db96d56Sopenharmony_ci except: 207db96d56Sopenharmony_ci _MAXFD = 256 217db96d56Sopenharmony_ci test_fds = range(0, _MAXFD) 227db96d56Sopenharmony_ci else: 237db96d56Sopenharmony_ci test_fds = map(int, sys.argv[1:]) 247db96d56Sopenharmony_ci for fd in test_fds: 257db96d56Sopenharmony_ci try: 267db96d56Sopenharmony_ci st = os.fstat(fd) 277db96d56Sopenharmony_ci except OSError as e: 287db96d56Sopenharmony_ci if e.errno == errno.EBADF: 297db96d56Sopenharmony_ci continue 307db96d56Sopenharmony_ci raise 317db96d56Sopenharmony_ci # Ignore Solaris door files 327db96d56Sopenharmony_ci if not stat.S_ISDOOR(st.st_mode): 337db96d56Sopenharmony_ci fds.append(fd) 347db96d56Sopenharmony_ci print(','.join(map(str, fds))) 35