私はbashスクリプトから2つの子プロセスを開始し、wait
コマンドを使用して両方の完了を待機しています。
./proc1 &
pid1=$!
echo "started proc1: ${pid1}"
./proc2 &
pid2=$!
echo "started proc2: ${pid2}"
echo -n "working..."
wait $pid1 $pid2
echo " done"
このスクリプトは、通常の場合は正常に機能しています。両方のプロセスが完了するのを待ってから終了します。ただし、このスクリプトを停止する必要がある場合があります(Ctrl+C
を使用)。しかし、それを停止しても、子プロセスは中断されません。どうすればメインスクリプトで完全に削除できますか?
SIGINTを処理するトラップを設定します(Ctrl + C)。あなたの場合、それは次のようなものです:
trap "kill -2 $pid1 $pid2" SIGINT
待機コマンドの前に置いてください。