python3脚本作为python2中的子进程,空PIPE

时间:2017-08-31 21:31:01

标签: python subprocess fcntl

我用这两个脚本来说明我的问题。

我希望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。 因此输出被重定向,但它基本上丢失了。 这不是预期的。 如何从子进程获取输出? 在我的真实脚本中,子脚本的输出在父脚本中处理而不是打印。

谢谢你的帮助。

0 个答案:

没有答案