首页 > 解决方案 > 使用子进程立即退出 shell 脚本

问题描述

我在 shell 命令中有一个 while 循环: sp = subprocess.Popen("while [ 1 ]; do say \"hello world\"; done;"). 但是,当我发送时sp.kill(),循环不会立即终止。相反,它完成了它正在进行的迭代,然后退出。我注意到没有循环的版本"say \"hello world\",立即终止。我尝试使用 发送各种 C 代码signal,但似乎没有任何效果。如何立即退出循环?

标签: python-3.xbash

解决方案


我认为最好的方法是使用带有发送信号选项的kill命令来终止进程。这不会让进程处理信号并完全终止它。还有其他发送此信号的方法。喜欢-9SIGKILLos.kill()

你只需要弄清楚进程的UID是什么,然后杀死它。


推荐阅读