1 # Copyright 2012 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
4 from _emerge.SubProcess import SubProcess
6 class PopenProcess(SubProcess):
8 __slots__ = ("pipe_reader", "proc",)
10 def __init__(self, **kwargs):
11 SubProcess.__init__(self, **kwargs)
12 self.pid = self.proc.pid
13 self._registered = True
16 if self.pipe_reader is not None:
18 self.pipe_reader.scheduler = self.scheduler
19 except AttributeError:
21 self.pipe_reader.addExitListener(self._pipe_reader_exit)
22 self.pipe_reader.start()
24 def _pipe_reader_exit(self, pipe_reader):
25 self._reg_id = self.scheduler.child_watch_add(
26 self.pid, self._child_watch_cb)
28 def _child_watch_cb(self, pid, condition, user_data=None):
30 self._waitpid_cb(pid, condition)