diff options
Diffstat (limited to 'examples/subprocess_attach_write_pipe.py')
-rw-r--r-- | examples/subprocess_attach_write_pipe.py | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/examples/subprocess_attach_write_pipe.py b/examples/subprocess_attach_write_pipe.py index 8614877..8b9e7ec 100644 --- a/examples/subprocess_attach_write_pipe.py +++ b/examples/subprocess_attach_write_pipe.py @@ -1,14 +1,19 @@ #!/usr/bin/env python3 """Example showing how to attach a write pipe to a subprocess.""" -import asyncio +import trollius as asyncio +from trollius import From import os, sys -from asyncio import subprocess +from trollius import subprocess code = """ import os, sys fd = int(sys.argv[1]) data = os.read(fd, 1024) -sys.stdout.buffer.write(data) +if sys.version_info >= (3,): + stdout = sys.stdout.buffer +else: + stdout = sys.stdout +stdout.write(data) """ loop = asyncio.get_event_loop() @@ -17,17 +22,17 @@ loop = asyncio.get_event_loop() def task(): rfd, wfd = os.pipe() args = [sys.executable, '-c', code, str(rfd)] - proc = yield from asyncio.create_subprocess_exec( - *args, - pass_fds={rfd}, - stdout=subprocess.PIPE) + kwargs = {'stdout': subprocess.PIPE} + if sys.version_info >= (3, 2): + kwargs['pass_fds'] = (rfd,) + proc = yield From(asyncio.create_subprocess_exec(*args, **kwargs)) - pipe = open(wfd, 'wb', 0) - transport, _ = yield from loop.connect_write_pipe(asyncio.Protocol, - pipe) + pipe = os.fdopen(wfd, 'wb', 0) + transport, _ = yield From(loop.connect_write_pipe(asyncio.Protocol, + pipe)) transport.write(b'data') - stdout, stderr = yield from proc.communicate() + stdout, stderr = yield From(proc.communicate()) print("stdout = %r" % stdout.decode()) pipe.close() |