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的消息。。。