我使用启动omxplayer的Python代码。它播放歌曲,有时在歌曲中播放广告。在这种情况下,两名球员跑。当omxplayer超时时出现问题。超时后我无法关闭它,所以到现在为止我已经使用了
os.system("killall -9 omxplayer.bin")
当只播放一首歌时没关系,但是当歌曲中的广告结束且omxplayer超时(不知道为什么,但经常发生超时)时,此命令会杀死两个omxplayers。因此,如果我可以将进程的PID(omxplayer.bin)存储在python中的变量中并使用它来终止进程,那将会很棒。但我会感谢任何可以返回给定进程的PID而不是从python代码中删除它的解决方案。到目前为止我尝试了很多东西。有谁可以帮我这个?
答案 0 :(得分:1)
我建议使用psutil,特别是psutil.process_iter():
success: function(result) {
//result is json format
var $tr = $('<tr/>');
$tr.append($('<td/>').html(result.itemname));
$tr.append($('<td/>').html(result.qty));
$tr.append($('<td/>').html(result.prices));
$('.list-order tr:last').before($tr);
}
答案 1 :(得分:1)
一个可能的解决方案,正如我评论的那样:
import os
import signal
from subprocess import check_output
def get_pid(name):
return check_output(["pidof", name])
def main():
os.kill(get_pid(whatever_you_search), signal.SIGTERM) #or signal.SIGKILL
if __name__ == "__main__":
main()
答案 2 :(得分:0)
我知道这个问题已经过时了,但这是我出来的,它适用于java程序:
首先得到pid
def getPidByName(name):
process = check_output(["ps", "-fea"]).split('\n')
for x in range(0, len(process)):
args = process[x].split(' ')
for j in range(0, len(args)):
part = args[j]
if(name in part):
return args[2]
然后杀死它 pid = getPidByName(“用户访问”) os.kill(int(pid),signal.SIGKILL)
正如@ElTête所说。
对于不同的进程,您可能需要调整args中的返回索引,具体取决于您尝试杀死的进程。或者只是遍历命令并杀死您发现名称的位置。这主要是因为“pidof”不适用于macOs或windows。