2016-11-23 29 views
0

私は並行処理に取り組んでいますが、cvarsとロックを扱うのではなく、シェルスクリプトでいくつかのコマンドを順番に実行して競合状態を回避するほうがはるかに簡単です。新しい問題は、これらのコマンドの1つが別のプログラムを呼び出すことで、OSが新しいプロセスに組み込むことにしました。私は親プログラムからこのプロセスを終了する必要がありますが、親プログラムは親プロセス(シェルスクリプト)のPIDだけを知っているので、このプロセスは単独で実行し続けます。親が終了したときにフォークの子プロセスが終了する(bash)

親が死んだときにサブプロセスが死ぬように設定する方法はありますか?私は親が死んだときにデーモンが終了するのを読むので、デーモンとして実行する方法を見つけようとしましたが、それはやりにくく、正しく実行できません。ありがとう!

+0

終了を開始した親スクリプトがすべてのバックグラウンドプロセスを終了すると言ってもいいですか? – Inian

+0

はい!どうやってやるの?ありがとう。 – AndyW

+0

親プロセスのexitで 'trap'コマンドが必要になると思いますが、どのように使用するのか分かりません。 – Inian

答えて

0

問題が見つかりました。これは修正されました(ただし、/ dev/nullにリダイレクトできない厄介なメッセージは除きます)。

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT 
+0

あなたが直面した問題についてもう少しコンテキストを加え、このコマンドがどのように解決したか説明してください! – Inian

関連する問題