Python 手动终止进程后读取stderr
对于使用Python 手动终止进程后读取stderr,python,Python,对于使用子流程python模块, 我知道使用communicate()是阅读stdout和stderr的正确方法 然而,我的情况与我在网上调查的案例略有不同 在我的情况下,我使用subprocess.Popen运行一个不会自行终止的可执行文件。 这就是我所做的: import signal import subprocess as subp exe = subp.Popen([the_exe, the_arg], shell=False, stdout=subp.PIPE, stderr=su
子流程
python模块,
我知道使用communicate()
是阅读stdout
和stderr
的正确方法
然而,我的情况与我在网上调查的案例略有不同
在我的情况下,我使用subprocess.Popen
运行一个不会自行终止的可执行文件。
这就是我所做的:
import signal
import subprocess as subp
exe = subp.Popen([the_exe, the_arg], shell=False, stdout=subp.PIPE, stderr=subp.PIPE)
# one minute later...
exe.send_signal(signal.SIGINT)
pipe_stdout, pipe_stderr = exe.communicate()
但是调用communicate()
,我仍然遇到了死锁。。。
我在用蟒蛇3
我还尝试将send\u signal(signal.SIGINT)
替换为exe.terminate()
或exe.kill()
。
但以上这些都不能解决问题 无法在Ubuntu上的Python3.4上复制。您正在运行的是什么程序,并且您是否确定该程序正在终止(即未捕获
SIGINT
)?可执行文件和\u exe
被设计为长时间运行。但我只需要它在头几分钟内写入stderr的消息……无法在Ubuntu的Python3.4上重现。您正在运行的是什么程序,并且您是否确定该程序正在终止(即未捕获SIGINT
)?可执行文件和\u exe
被设计为长时间运行。但我只需要它在头几分钟内写入stderr的消息。。。