issue7213: Open the pipes used by subprocesses with the FD_CLOEXEC flag from

the C code, using pipe2() when available.  Adds unittests for close_fds and
cloexec behaviors.
This commit is contained in:
Gregory P. Smith 2010-12-13 07:59:39 +00:00
parent f560485388
commit 51ee270876
10 changed files with 195 additions and 17 deletions

View file

@ -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)))