myprogram
埋め込みファイルがある場合
sleep 200
date
バックグラウンドで次のコマンドを実行します。
$ sh myprogram &
myprogram
コマンドの使用がいつ完了するかを知りたいです。wait
$ cat >notify
wait PID
echo "Program completed"
$ sh notify &
PID
3番目のコマンドによって提供されたプロセスID。私の質問は、「Program Complete」メッセージが最後のコマンドの直後に端末に印刷されることです。なぜ待機しないのですか? 、Ubuntu 11.10を使用しています
ベストアンサー1
親と子の関係は、関連するすべての「&」のために壊れます。
組み込み関数は、明らかに呼び出しプロセスの直接子PIDでのみ機能するこのwait(2)
システム呼び出しに基づいています。wait
wait(2)
を呼び出すと、対話型シェルの子として実行されますsh myprogram &
。sh
呼び出すと、対話型シェルの子になりますsh notify &
。sh
したがって、2番目の項目はsh
最初の項目と直接の親関係がなく、機能しませんsh
。wait
sh myprogram &; sh notify;
このwait
コマンドは対話型シェルの子孫によって呼び出されるため、これらのいずれかを呼び出す場合は機能しません。
私にはうまくいきました:sh myprogram &; wait
このwait
コマンドを使用すると、インタラクティブシェル(sh
明示的に呼び出された親シェル)がsh
終了するまで停止します。