Home | History | Annotate | Download | only in subprocessdata
      1 """When called as a script, print a comma-separated list of the open
      2 file descriptors on stdout.
      3 
      4 Usage:
      5 fd_stats.py: check all file descriptors
      6 fd_status.py fd1 fd2 ...: check only specified file descriptors
      7 """
      8 
      9 import errno
     10 import os
     11 import stat
     12 import sys
     13 
     14 if __name__ == "__main__":
     15     fds = []
     16     if len(sys.argv) == 1:
     17         try:
     18             _MAXFD = os.sysconf("SC_OPEN_MAX")
     19         except:
     20             _MAXFD = 256
     21         test_fds = range(0, _MAXFD)
     22     else:
     23         test_fds = map(int, sys.argv[1:])
     24     for fd in test_fds:
     25         try:
     26             st = os.fstat(fd)
     27         except OSError as e:
     28             if e.errno == errno.EBADF:
     29                 continue
     30             raise
     31         # Ignore Solaris door files
     32         if not stat.S_ISDOOR(st.st_mode):
     33             fds.append(fd)
     34     print(','.join(map(str, fds)))
     35