Parameterize create_child() in order to support non-pipe children.

pull/35/head
David Wilson 9 years ago
parent ae7fcb75e4
commit fe171cd8cf

@ -65,7 +65,7 @@ def create_child(*args):
childfp.close() childfp.close()
LOG.debug('create_child() child %d fd %d, parent %d, args %r', LOG.debug('create_child() child %d fd %d, parent %d, args %r',
pid, parentfp.fileno(), os.getpid(), args) pid, parentfp.fileno(), os.getpid(), args)
return pid, parentfp return pid, os.dup(parentfp.fileno())
class LogForwarder(object): class LogForwarder(object):
@ -259,12 +259,13 @@ class Stream(econtext.core.Stream):
compressed = zlib.compress(minimize_source(source)) compressed = zlib.compress(minimize_source(source))
return str(len(compressed)) + '\n' + compressed return str(len(compressed)) + '\n' + compressed
create_child = staticmethod(create_child)
def connect(self): def connect(self):
LOG.debug('%r.connect()', self) LOG.debug('%r.connect()', self)
pid, sock = create_child(*self.get_boot_command()) pid, fd = self.create_child(*self.get_boot_command())
self.receive_side = econtext.core.Side(self, os.dup(sock.fileno())) self.receive_side = econtext.core.Side(self, fd)
self.transmit_side = econtext.core.Side(self, os.dup(sock.fileno())) self.transmit_side = econtext.core.Side(self, os.dup(fd))
sock.close()
LOG.debug('%r.connect(): child process stdin/stdout=%r', LOG.debug('%r.connect(): child process stdin/stdout=%r',
self, self.receive_side.fd) self, self.receive_side.fd)

Loading…
Cancel
Save