summaryrefslogtreecommitdiff
path: root/examples/subprocess_attach_write_pipe.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/subprocess_attach_write_pipe.py')
-rw-r--r--examples/subprocess_attach_write_pipe.py27
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()