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

View file

@ -0,0 +1,7 @@
"""When called as a script, consumes the input"""
import sys
if __name__ = "__main__":
for line in sys.stdin:
pass

View file

@ -0,0 +1,7 @@
"""When ran as a script, simulates cat with no arguments."""
import sys
if __name__ == "__main__":
for line in sys.stdin:
sys.stdout.write(line)

View file

@ -0,0 +1,10 @@
"""When called with a single argument, simulated fgrep with a single
argument and no options."""
import sys
if __name__ == "__main__":
pattern = sys.argv[1]
for line in sys.stdin:
if pattern in line:
sys.stdout.write(line)