使用Popen,Child Process失败了

时间:2017-06-07 17:17:45

标签: python

我试图让一个名为xselect的程序在python中使用Popen构造运行。如果我通过手动输入命令手动从终端运行xselect,它会一直运行。但是,当从python脚本完成时,它会冻结某个命令并且不会继续。检查日志文件时,将捕获所有输出,但不会捕获任何错误消息。

我认为Popen可能不知道如何处理xselect输出中的错误,并导致xselect冻结。为了解决这个问题,我试图添加一个超时,以便在5秒后杀死xselect,但这也没有用。

任何人都可以帮助我运行吗?

with subprocess.Popen(args, stdout=subprocess.PIPE, 
stderr=subprocess.STDOUT, universal_newlines=True) as proc:


    proc.wait(timeout=5)
    out = proc.stdout.read()
    if TimeoutExpired:
        proc.kill()

1 个答案:

答案 0 :(得分:0)

在此处查看proc.wait()的警告:https://docs.python.org/2/library/subprocess.html#subprocess.Popen.wait。基本上,您应该使用proc.communicate(),或者应该从proc.stdout阅读而不是等待。

相关问题