#!/usr/bin/env python
import os
import sys
from select import select
from subprocess import PIPE, Popen
# dummy process to generate some output with a delay
p = Popen( [ sys .executable , '-u' , '-c' , """import time
for i in range(5):
print("%d" % i)
time.sleep(.1)
""" ] , bufsize= 0 , stdout= PIPE)
# read input from the subprocess and stdin concurrently
timeout = .4 # seconds
rlist = [ f.fileno ( ) for f in [ sys .stdin , p.stdout ] ]
while rlist: # while not EOF
for fd in select ( rlist, [ ] , [ ] , timeout) [ 0 ] :
input_data = os .read ( fd, 512 )
source = "stdin" if fd == sys .stdin .fileno ( ) else "subprocess"
print ( "got %r from %s" % ( input_data, source) )
if not input_data: # EOF
rlist.remove ( fd)
p.stdout .close ( )
p.wait ( )
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCmltcG9ydCBvcwppbXBvcnQgc3lzCmZyb20gc2VsZWN0IGltcG9ydCBzZWxlY3QKZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQSVBFLCBQb3BlbgoKIyBkdW1teSBwcm9jZXNzIHRvIGdlbmVyYXRlIHNvbWUgb3V0cHV0IHdpdGggYSBkZWxheQpwID0gUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAnLXUnLCAnLWMnLCAiIiJpbXBvcnQgdGltZQpmb3IgaSBpbiByYW5nZSg1KToKICAgIHByaW50KCIlZCIgJSBpKQogICAgdGltZS5zbGVlcCguMSkKIiIiXSwgYnVmc2l6ZT0wLCBzdGRvdXQ9UElQRSkKCiMgcmVhZCBpbnB1dCBmcm9tIHRoZSBzdWJwcm9jZXNzIGFuZCBzdGRpbiBjb25jdXJyZW50bHkKdGltZW91dCA9IC40ICMgc2Vjb25kcwpybGlzdCA9IFtmLmZpbGVubygpIGZvciBmIGluIFtzeXMuc3RkaW4sIHAuc3Rkb3V0XV0Kd2hpbGUgcmxpc3Q6ICMgd2hpbGUgbm90IEVPRgogICAgZm9yIGZkIGluIHNlbGVjdChybGlzdCwgW10sIFtdLCB0aW1lb3V0KVswXToKICAgICAgICBpbnB1dF9kYXRhID0gb3MucmVhZChmZCwgNTEyKQogICAgICAgIHNvdXJjZSA9ICJzdGRpbiIgaWYgZmQgPT0gc3lzLnN0ZGluLmZpbGVubygpIGVsc2UgInN1YnByb2Nlc3MiCiAgICAgICAgcHJpbnQoImdvdCAlciBmcm9tICVzIiAlIChpbnB1dF9kYXRhLCBzb3VyY2UpKQogICAgICAgIGlmIG5vdCBpbnB1dF9kYXRhOiAjIEVPRgogICAgICAgICAgICBybGlzdC5yZW1vdmUoZmQpCnAuc3Rkb3V0LmNsb3NlKCkKcC53YWl0KCk=