【问题标题】:PID number mismatchPID 编号不匹配
【发布时间】:2016-05-20 07:48:35
【问题描述】:

我使用以下代码(只是相关代码)在 Python 中生成一个进程:

...
_LAUNCH_CMD = '/usr/bin/omxplayer -s --vol %s %s %s'
...
cmd = self._LAUNCH_CMD % (volume, args, file)
...
self._process = pexpect.spawn(cmd, timeout=5)

它总是正常启动。在某些情况下,我需要获取进程的 PID 并从 python 代码中终止它。我试过了

self._process.pid

它给了我一个 PID,但过了一段时间我意识到它不起作用,因为这个命令总是返回比实际进程少十个数字。 例如,当 omxplayer 运行并且我使用上一个命令检查 PID 时,它返回“24178”,但是当我使用“pidof omxplayer.bin”时,它返回“24188”。我不知道 10 是恒定的还是可以改变的,所以我认为硬编码不是一个好主意

os.system("kill -9 %s" % (self._process.pid + 10))

任何人都知道导致差异的原因或解决方案是什么?

【问题讨论】:

    标签: python linux raspberry-pi omxplayer


    【解决方案1】:

    可能/usr/bin/omxplayer 是一个执行omxplayer.bin 的包装器,它被分配了一个新的PID。如果您直接执行omxplayer.bin,您将避免手头的问题,但您需要在启动真正的二进制文件之前完成/usr/bin/omxplayer 正在做的工作。 PID 是随机的,因此您不能打赌 PID 总是相差 10。

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多