python - 获取进程的 PID 号,然后用 Python 杀死它

标签 python linux raspberry-pi

我使用启动 omxplayer 的 Python 代码。它会播放歌曲,有时还会在歌曲播放期间播放广告。在这种情况下,两名球员跑。当 omxplayer 超时时,问题就来了。超时后我无法关闭它,所以到目前为止我已经使用了

os.system("killall -9 omxplayer.bin")

当只播放一首歌时没问题,但是当广告在一首歌中结束并且 omxplayer 超时(不知道为什么,但超时经常发生)这个命令会杀死两个 omxplayer。因此,如果我可以获得进程的 PID (omxplayer.bin) 并将其存储在 python 中的一个变量中并使用它来终止进程,那就太好了。但我很感激任何可以返回给定进程的 PID 的解决方案,而不是从 python 代码中将其杀死。到目前为止,我尝试了很多东西。任何人都可以帮助我吗?

最佳答案

一个可能的解决方案,正如我评论的那样:

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()

关于python - 获取进程的 PID 号,然后用 Python 杀死它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344987/

相关文章:

python - 如何修复读取列 MultiIndex 标题行缺少值的 CSV?

linux - 更新谷歌纬度

linux - 如何在 perl 脚本中的 telnet 命令提示符下运行命令

linux - 无法 ping 通在 Qemu 上运行的 Linux 镜像

python - 是否可以在没有滚动条的情况下滚动 Tkinter 列表框?

c++ - 从使用 fmemopen() 打开的流中读取时的垃圾值

python - Google App Engine (Python) 中当前应用程序的名称

python - 这个 Python 代码的哪个版本更快?

python - 遇到同时连接到多个设备的多线程问题

c++ - 如何阻塞直到 WiringPi 完成发送串行数据(UART)?