def doit(self, fd):
p = ClosingPipesProcessProtocol(True)
p.deferred.addCallbacks(
callback=lambda _: self.fail("I wanted an errback."),
errback=self._endProcess, errbackArgs=(p,))
reactor.spawnProcess(p, sys.executable,
[sys.executable, '-u', '-c',
r'raw_input(); import sys, os; os.write(%d, "foo\n"); sys.exit(42)' % fd],
env=None)
p.transport.write('go\n')
if fd == 1:
p.transport.closeStdout()
elif fd == 2:
p.transport.closeStderr()
else:
raise RuntimeError
# make the buggy case not hang
p.transport.closeStdin()
return p.deferred
评论列表
文章目录