次のコード (関連するコードのみ) を使用して、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))
違いの原因や解決策を知っている人はいますか?