diff options
Diffstat (limited to 'pym/_emerge/PipeReader.py')
-rw-r--r-- | pym/_emerge/PipeReader.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py index 7209e9e93..bb4e0dc1c 100644 --- a/pym/_emerge/PipeReader.py +++ b/pym/_emerge/PipeReader.py @@ -1,4 +1,4 @@ -# Copyright 1999-2012 Gentoo Foundation +# Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 from portage import os @@ -26,9 +26,17 @@ class PipeReader(AbstractPollTask): else: output_handler = self._output_handler + fcntl_flags = os.O_NONBLOCK + try: + fcntl.FD_CLOEXEC + except AttributeError: + pass + else: + fcntl_flags |= fcntl.FD_CLOEXEC + for f in self.input_files.values(): fcntl.fcntl(f.fileno(), fcntl.F_SETFL, - fcntl.fcntl(f.fileno(), fcntl.F_GETFL) | os.O_NONBLOCK) + fcntl.fcntl(f.fileno(), fcntl.F_GETFL) | fcntl_flags) self._reg_ids.add(self.scheduler.io_add_watch(f.fileno(), self._registered_events, output_handler)) self._registered = True |