PID编号不匹配

时间:2016-05-20 07:48:35

标签: python linux raspberry-pi omxplayer

我使用以下代码(只是相关代码)在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))

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

1 个答案:

答案 0 :(得分:0)

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