New submission from Justin Cappos <[EMAIL PROTECTED]>: The behavior of popen vs popen[2-4] differs with respect to open file descriptors (at least on the Linux implementation of popen). popen does not close file descriptors, thus processes retain open file descriptors from their parent. This is likely not desirable for security and stability reasons.
If this isn't fixed, at a minimum it would be a good thing to document. Here is an example that demonstrates the issue: <<< start of open_and_popen.py>>> # This will not be printed if popen closes file descriptors import os myfd = os.open("open_and_popen.py",os.O_RDONLY) readfo = os.popen("python print_from_fd.py "+str(myfd),"r") print "os.popen results in:" print readfo.read() # it will print the first line of the file here readfo.close() (junkinfo, readfo) = os.popen2("python print_from_fd.py "+str(myfd),"r") junkinfo.close() print "os.popen2 results in:" print readfo.read() # the child got an error, so this is just the error text readfo.close() os.close(myfd) <<< end of open_and_popen.py>>> <<< start of print_from_fd.py>>> import os import sys print os.read(int(sys.argv[1]),60) <<< end of print_from_fd.py>>> ---------- components: Library (Lib) messages: 68416 nosy: justincappos severity: normal status: open title: popen / popen[234] inconsistent fd behavior type: security _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3144> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com