我试图让一个名为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()
答案 0 :(得分:0)
在此处查看proc.wait()
的警告:https://docs.python.org/2/library/subprocess.html#subprocess.Popen.wait。基本上,您应该使用proc.communicate()
,或者应该从proc.stdout
阅读而不是等待。