Commit 03ab520d authored by Denis Bilenko's avatar Denis Bilenko

subprocess: remove nonblock flag from file descriptors in child process (fixes issue #134)

parent 4fd25fde
...@@ -553,6 +553,10 @@ class Popen(object): ...@@ -553,6 +553,10 @@ class Popen(object):
else: else:
fcntl.fcntl(fd, fcntl.F_SETFD, old & ~cloexec_flag) fcntl.fcntl(fd, fcntl.F_SETFD, old & ~cloexec_flag)
def _remove_nonblock_flag(self, fd):
flags = fcntl.fcntl(fd, fcntl.F_GETFL) & (~os.O_NONBLOCK)
fcntl.fcntl(fd, fcntl.F_SETFL, flags)
def pipe_cloexec(self): def pipe_cloexec(self):
"""Create a pipe with FDs set CLOEXEC.""" """Create a pipe with FDs set CLOEXEC."""
# Pipes' FDs are set CLOEXEC by default because we don't want them # Pipes' FDs are set CLOEXEC by default because we don't want them
...@@ -645,6 +649,7 @@ class Popen(object): ...@@ -645,6 +649,7 @@ class Popen(object):
self._set_cloexec_flag(a, False) self._set_cloexec_flag(a, False)
elif a is not None: elif a is not None:
os.dup2(a, b) os.dup2(a, b)
self._remove_nonblock_flag(b)
_dup2(p2cread, 0) _dup2(p2cread, 0)
_dup2(c2pwrite, 1) _dup2(c2pwrite, 1)
_dup2(errwrite, 2) _dup2(errwrite, 2)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment