2016-12-27 20 views
0

我试图从python脚本执行bash脚本while :; do afplay beep.wav ; done命令,但能够在之后终止它。Python从子进程开始while循环时kill bash

我想:

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()不会杀它。

+2

因为'exec'是一个内建函数,所以输入'help exec'而不是'man exec'。然后你会看到'exec'执行_commands._如果你稍微想一下,'exec'非外部命令'')''是没有意义的。你想做什么? –

+0

@gniourf_gniourf我试图执行'while:;做afplay beep.wav;完成'python脚本的命令,但能够在之后杀死它。 [这个答案](http://stackoverflow.com/a/13143013/3310334)显示了一个简单的方法来从Python中杀死一个bash脚本,我试图复制它,但它不起作用。 – theonlygusti

+0

然后在你的问题中明确所有这一切!你需要大量编辑你的问题! –

回答

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

这似乎是个伎俩。我正在杀死进程组(os.killpg)而不是唯一的进程。