select.poll: fileno ( ):
import os, sys, select, subprocess
args = ['sh', '-c', 'while true; do date; sleep 2; done']
p1 = subprocess.Popen(args, stdout=subprocess.PIPE)
p2 = subprocess.Popen(args, stdout=subprocess.PIPE)
while True:
rlist, wlist, xlist = select.select([p1.stdout, p2.stdout], [], [])
for stdout in rlist:
sys.stdout.write(os.read(stdout.fileno(), 1024))
, , . "" , p1.stdout fileno, . , select.
, stdout os.read stdout.read. , stdout.read(1024) , . EOF, EOF , stdout.read , 1024 .
os.read, , , - , . , 1024 os.read(stdout.fileno(), 1024) stdout.
select.epoll , , "" (FD), os.read, :
import os, sys, select, subprocess
args = ['sh', '-c', 'while true; do date; sleep 2; done']
p1 = subprocess.Popen(args, stdout=subprocess.PIPE)
p2 = subprocess.Popen(args, stdout=subprocess.PIPE)
poll = select.poll()
poll.register(p1.stdout)
poll.register(p2.stdout)
while True:
rlist = poll.poll()
for fd, event in rlist:
sys.stdout.write(os.read(fd, 1024))
FD select.POLLHUP. unregister , , , FD .
, , , , - , , .