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

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

于 2016-05-20T07:52:54.257 に答える