2016-05-20 17 views
0

私は、次のコード(単に関連するコード)とPythonでプロセスを生成:PID番号不一致

... 
_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コードから削除する必要があります。私は、このコマンドは常に実際のプロセスより10少ない数を返すので、それは私にPIDを与えるが、いくつかの時間後、私はそれが機能しなかったことに気づき

self._process.pid 

を試してみました。 たとえば、omxplayerが実行され、前のコマンドでPIDをチェックすると "24178"が返されますが、 "pidof omxplayer.bin"を使用すると "24188"が返されます。私は10が一定であることを知っていないか、それはそう変更することができ、私はそれが良いハードコードするアイデアそれは

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

誰でも差が生じるか、何が解決策になることができます知っているようなものであるとは思いませんか?

答えて

0

おそらく/usr/bin/omxplayeromxplayer.binを実行するラッパーで、新しいPIDが割り当てられます。 omxplayer.binを直接実行すると、すぐに問題を回避できますが、実際のバイナリを起動する前に/usr/bin/omxplayerが行っている作業を行う必要があります。 PIDはランダムであるため、PIDでは常に10の差になるとは考えられません。