【发布时间】:2017-03-23 06:45:57
【问题描述】:
代码:
res = Subprocess.Popen(cmd,executable="/bin/bash", shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
while not res.poll():
do something....
我运行 python 代码如下: nohup python my_script.py &
然后我想终止脚本:
kill pid_of_the_script
但它不起作用(所以由 Subprocess.Popen 创建的 cmd 过程仍然存在)我必须使用:
kill -9 pid_of_the_script
为什么 kill 命令在这里不起作用?
由于 kill -9 也不会杀死 cmd 进程, 当我捕获 SIGTERM 信号时(这是问题,当我发送 kill 命令时,脚本无法捕获此信号,我确实将 SIGTERM 信号注册到信号处理程序),处理程序首先杀死 cmd 进程然后使用kill -9 杀死脚本本身(基于 pid)。
更新: 也许 thread.join() 方法会导致这种情况。 在主线程调用join的地方,主线程好像不能处理信号...
【问题讨论】:
标签: python multithreading signal-processing