私のプログラムは文字列(シェルスクリプトのパス)を入力として受け取ります。今度はそのシェルスクリプトを起動し、そのシェルスクリプトのプロセスIDを見つけなければなりません。プログラム名を使用してプロセスIDを見つける
system()
関数を使用してシェルスクリプトを起動し、その後popen()
とps -aef | grep "ShellScript"
を使用してPIDを取得しています。
これを行うには、より良い方法があることが私に示唆されています。私がやったやり方は、複数のスクリプトが同時に実行されている場合、間違ったPIDを与えます。
起動後に特定のスクリプト名に対してPIDを取得する正しい方法は何ですか?
_「複数のスクリプトが同時に実行されている場合は、間違ったPIDを与えるだろう。」_ですから、複数のPIDを処理する必要がありますか? – user0042
[フォーク()](https://linux.die.net/man/2/fork)と[exec()](https://linux.die.net/man/3/exec)を参照してください。 – Galik
'system()'を 'fork()'と 'exec ...()'に置き換えるのが一番簡単な方法かもしれません。しかし、現時点でどのように物事を達成していますか?スクリプトが終了するまで、通常は 'system()'は返されません... –