我使用以下代码(只是相关代码)在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))
任何人都知道导致差异的原因或解决方案是什么?
答案 0 :(得分:0)
可能/usr/bin/omxplayer
是一个执行omxplayer.bin
的包装器,它被赋予一个新的PID。如果您直接执行omxplayer.bin
,则可以避免手头的问题,但在启动真正的二进制文件之前,您需要完成/usr/bin/omxplayer
正在进行的工作。 PID是随机的,所以你不能打赌它在PID中总是相差10。