非ログインシェル用の huponexit

非ログインシェル用の huponexit

これはバックグラウンド プロセスはログオフ時に SIGHUP を受け取りますか?

これはログイン シェルでのみ機能するようですhuponexit。ログイン シェル以外のシェル、たとえばターミナル ウィンドウで起動されるシェルでこの動作を実現するにはどうすればよいでしょうか。

HUPプロセスが開始された場所から bash に送信すると、期待どおりに機能しますが、huponexit機能しません。

答え1

シェルの終了時に実行する独自のコードを宣言できます。

trap 'kill -HUP $(jobs -lp) 2>/dev/null || true' EXIT

(私の以前の提案はtrap 'kill -HUP $$' EXITbash 4.2 では機能しません。ソースを正しく理解していれば、bash は終了条件をすでに処理しているときに、HUP の再送信を含む通常のクリーンアップの一部をスキップするからです。)

答え2

trap 'kill -HUP -$$' exit

上にコメントを追加できないようです。プロセスグループを示すには、マイナス記号を前に付けます。これでハングアップすると思います。全てシェルによって生成された子プロセスには、孫プロセス、ひ孫プロセスなどが含まれます。

関連情報