summaryrefslogtreecommitdiffstats
path: root/Lib/test/subprocessdata/fd_status.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/subprocessdata/fd_status.py')
-rw-r--r--Lib/test/subprocessdata/fd_status.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/subprocessdata/fd_status.py b/Lib/test/subprocessdata/fd_status.py
new file mode 100644
index 0000000..083b2f9
--- /dev/null
+++ b/Lib/test/subprocessdata/fd_status.py
@@ -0,0 +1,24 @@
+"""When called as a script, print a comma-separated list of the open
+file descriptors on stdout."""
+
+import errno
+import os
+import fcntl
+
+try:
+ _MAXFD = os.sysconf("SC_OPEN_MAX")
+except:
+ _MAXFD = 256
+
+def isopen(fd):
+ """Return True if the fd is open, and False otherwise"""
+ try:
+ fcntl.fcntl(fd, fcntl.F_GETFD, 0)
+ except IOError as e:
+ if e.errno == errno.EBADF:
+ return False
+ raise
+ return True
+
+if __name__ == "__main__":
+ print(','.join(str(fd) for fd in range(0, _MAXFD) if isopen(fd)))