並列の子プロセスを起動する Bash スクリプトを作成したいと考えています。子スクリプトが親プロセスに送信されるシグナルを受信できるようにする方法はありますか?
子プロセスを起動する方法は大まかに次のとおりですが、これは私のシグナリング基準を満たしていません。
for (( i=0; i<9; i++ ))
{
{ echo $i start ; sleep 5s ; echo $i complete ; } &
}
wait
これは ( を使用する) C プログラムで自動的に機能するため、シグナル転送fork/exec
を使用しなくても可能であると私は信じています。trap
これに対する 1 つの回避策は、 を使用することGNU-parallel
です。xargs
そのメカニズムが何であるかはわかりませんが、ループをスタイル構文 に再構築する意思がある限り、この問題は解決します。オプションを使用しても問題は解決GNU-parallel
しません。--semaphore
答えはここにあると思いますが、それを Bash: Signal sent to both child and parent processに変換する方法がわかりません。