0

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

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

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

4

1 回答 1

0

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

于 2016-05-20T07:52:54.257 回答