我用这两个脚本来说明我的问题。
我希望python2脚本有一个python3脚本和子进程一样非阻塞读取。
假设两个脚本都在/ tmp文件夹中
子python3脚本是这样的:
#!/usr/bin/env python3
import time
while True:
print ("test")
time.sleep(0.5)
父脚本是:
#!/usr/bin/env python2
import fcntl
import os
import subprocess
import time
sub = subprocess.Popen(['python3','/tmp/child.py'], cwd='/tmp', bufsize=1, stdout=subprocess.PIPE)
fcntl.fcntl(sub.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
while True:
try:
print sub.stdout.read() #Thats the not working part
except IOError:
pass
time.sleep(0.5)
父脚本没有从子进程获取输出,也没有输出到stdout。 因此输出被重定向,但它基本上丢失了。 这不是预期的。 如何从子进程获取输出? 在我的真实脚本中,子脚本的输出在父脚本中处理而不是打印。
谢谢你的帮助。