Python从子进程启动循环时杀死bash

时间:2016-12-27 13:33:57

标签: python bash shell subprocess exec

我正在尝试从python脚本执行bash脚本while :; do afplay beep.wav ; done命令,但之后可以杀死它。

我试过了:

process = subprocess.Popen("exec while :; do afplay %s ; done" % fileName, shell=True, executable='/bin/bash')

this answer所示,但上述内容并不适用于我。 (脚本不会运行。)

如何从python运行while :; do afplay beep.wav ; done并在启动后的任何时候终止它?

编辑:只是注意到exec >(while :; do afplay %s; done)会启动脚本,但现在process.kill()不会杀死它。

1 个答案:

答案 0 :(得分:1)

os.killpg(os.getpgid(process.pid), signal.SIGINT)

这似乎可以解决问题。我正在杀死进程组(os.killpg),而不是唯一的进程。