無限ループでプログラムを実行すると、nohup
プログラムは無限に実行されますか(マシンがリセットされるか手動で終了するまで)。
答え1
Nohupは、アプリケーションによって無視される可能性があるHANGUP信号のデフォルト動作を設定します。特権を持つ他のプロセス(rootまたは同じユーザー)の他の信号または誤った動作(セグメントエラー、バスエラー)が原因でプログラムがシャットダウンする可能性があります。リソース制限(ulimit)はプログラムを終了することもできます。
これ以外には、無限ループが長時間実行される可能性が高い。
答え2
以下はnohupの重要な2行です。ソースコード。
(void)signal(SIGHUP, SIG_IGN);
// SIGHUPを無視
execvp(*argv, argv);
//コマンドを実行します。
したがって、アプリケーションが次のようなものを呼び出すまで
signal (SIGHUP, SIG_DFL);
//またはいくつかのカスタム信号ハンドラ
通常の状況では、システムを再起動するか直接シャットダウンするまで実行され続けます。
この場合も終了することがあります。Kmashが指摘した。。