1

このよくある質問 (および他の多くの本) によると:

ftp://rtfm.mit.edu/pub/faqs/unix-faq/programmer/faq

1.15 親プロセスが終了したときにプロセスが SIGHUP を取得しないのはなぜですか?

どのプロセスも「停止」していない場合、SIGHUP はバックグラウンド プロセスに送信されません。

しかし、バックグラウンド プロセスで SIGHUP がキャプチャされない場合、端末 (または ssh などの接続) を閉じると、SIGHUP が終了することは誰もが知っています。

つまり、CTRL+Z - bg は、ターミナルが閉じられたときにプロセスが存続するのに十分ではありません。

しかし、なぜ?どんな知恵も大歓迎です!

4

2 に答える 2

2

それには簡単な解決策があります。コマンドを実行する前に nohup を使用してください。

于 2011-10-18T18:27:21.397 に答える
0

少しグーグルした後。バックグラウンドプロセスを終了させるHUPシグナルはシェルからのものだと思います。

手順は次のとおりです。

  1. ターミナルが閉じられ、bash がカーネル (ドライバー) から SIGHUP を受け取る

  2. デフォルトでは、SIGHUP を受信すると bash が終了します。終了する前に、実行中または停止中のすべてのジョブにSIGHUP を再送信します。

  3. SIGHUP をキャプチャしない場合、バックグラウンド プロセスを含むすべてのジョブが終了します。

于 2011-04-03T12:11:04.453 に答える