0

nプロセス(私の場合はシミュレーション)を同時に実行し&たいので、次のように使用しています:

for i in {1..50};
do
     run simulation &
done

各シミュレーションが完了したら、その出力ファイルを解析する必要があります。私の質問は、プロセスがいつ完了したかをどのように知るのか、そしてプロセスの終了時に関数を呼び出すために何をするのかということです。

編集:私がする必要があるのは、シミュレーションを呼び出し、それが完了した後にそのファイルを解析する関数を呼び出すことだと思います。私の見方では、この関数はとにかく子プロセスでなければなりませんよね?

ありがとう!

4

3 に答える 3

3

すべてのシミュレーションが完了するまで待つ必要はないように思われるので、次のようにするだけです。

for i in {1..50};
do
     { run simulation && parse output; } &
done
于 2012-11-01T17:15:50.523 に答える
0

wait組み込みのユーティリティを使用します。詳細については、を参照man bashしてください。最も単純なケースではwait、それ自体ですべての子プロセスが終了するのを待ちます。

于 2012-11-01T17:15:45.923 に答える
0

ビルトインは、すべての子が終了するのwaitを待ちます。終了するジョブごとにコマンドを実行する場合は、を使用できますtrap。あなたの場合、との組み合わせがwait機能trapするはずです:

trap parse_output SIGCHLD
for i in {1..50}; do
  run simulation &
done
wait
于 2012-11-01T20:41:56.880 に答える