Issue #18571: Implementation of the PEP 446: file descriptors and file handles

are now created non-inheritable; add functions os.get/set_inheritable(),
os.get/set_handle_inheritable() and socket.socket.get/set_inheritable().
This commit is contained in:
Victor Stinner 2013-08-28 00:53:59 +02:00
parent 46e1ce214b
commit daf455554b
51 changed files with 1448 additions and 317 deletions

View file

@ -365,7 +365,7 @@ def spawnv_passfds(path, args, passfds):
if flag & fcntl.FD_CLOEXEC:
fcntl.fcntl(fd, fcntl.F_SETFD, flag & ~fcntl.FD_CLOEXEC)
tmp.append((fd, flag))
errpipe_read, errpipe_write = _posixsubprocess.cloexec_pipe()
errpipe_read, errpipe_write = os.pipe()
try:
return _posixsubprocess.fork_exec(
args, [os.fsencode(path)], True, passfds, None, None,
@ -381,7 +381,9 @@ def spawnv_passfds(path, args, passfds):
#
# Return pipe with CLOEXEC set on fds
#
# Deprecated: os.pipe() creates non-inheritable file descriptors
# since Python 3.4
#
def pipe():
import _posixsubprocess
return _posixsubprocess.cloexec_pipe()
return os.pipe()