システムコマンドを使用して開始されたプロセスのプロセスID

システムコマンドを使用して開始されたプロセスのプロセスID

Ubuntuオペレーティングシステムでシェルを開き、次の方法でmatlabのようなソフトウェアを開くとしましょう。

matlab &

MATLAB GUIでシステムコマンドを実行します。

system('/path/to/my/cppprog') % <-- PID of this running program?

そこで私は「cppprog」というC ++プログラムを始めました。

今私が始めたプログラムに関連するプロセスIDを見つけたいと思います。どうすればいいですか?異なるコマンドライン引数を使用して、同じプログラムから複数のシステムコマンドを呼び出すことができます。

答え1

スクリプトpidではなくシェルからインポートすることを意味するとします。matlab

matlab次のようにスクリプトのすべての子を表示できます。

matlab &
pstree -ap $!

$!バックグラウンドで実行した最後のコマンドのpid。最後のエントリではない場合は、matlabの pid を検索するか、現在のシェルの pid をpidof matlab使用してそのシェルのすべてのサブエントリを表示します。$$matlab

関連情報