nohupはどのように機能しますか?

nohupはどのように機能しますか?

私が理解しているのは、そのようなプロセス信号をブロックするには、SIGHUP信号が送信されるプロセス内でこれを実行する必要があることです。ただし、Unixファミリーシェルでは、bashこのコマンドを使用して子プロセスを作成し、親プロセスから子プロセスからのHUP信号をブロックできますnohup。どのように動作しますか?nohup信号をブロックしてからフォークせずにサブプロセスを実行する必要がありますか?これが私が考えることができる唯一の方法です。

ベストアンサー1

実装ソースコードを見るとnohup例えば牛に似た一種の栄養coreutilsバージョン。多くの設定があり、その一部は国際化目的で、残りはさまざまなリダイレクトオプションを処理するためのものです。これにより、実際の「nohupping」が発生します。

  signal (SIGHUP, SIG_IGN);

  char **cmd = argv + optind;
  execvp (*cmd, cmd);

お分かりのように、これはHUP信号を無視するようにプロセスを設定し、要求されたexecコマンドを発行します。

おすすめ記事