
これはバックグラウンド プロセスはログオフ時に SIGHUP を受け取りますか?。
これはログイン シェルでのみ機能するようですhuponexit
。ログイン シェル以外のシェル、たとえばターミナル ウィンドウで起動されるシェルでこの動作を実現するにはどうすればよいでしょうか。
HUP
プロセスが開始された場所から bash に送信すると、期待どおりに機能しますが、huponexit
機能しません。
答え1
シェルの終了時に実行する独自のコードを宣言できます。
trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT
(私の以前の提案はtrap 'kill -HUP $$' EXIT
bash 4.2 では機能しません。ソースを正しく理解していれば、bash は終了条件をすでに処理しているときに、HUP の再送信を含む通常のクリーンアップの一部をスキップするからです。)
答え2
trap 'kill -HUP -$$' exit
上にコメントを追加できないようです。プロセスグループを示すには、マイナス記号を前に付けます。これでハングアップすると思います。全てシェルによって生成された子プロセスには、孫プロセス、ひ孫プロセスなどが含まれます。