1

少し前まで、私は質問について疑問に思いました。Linuxでターミナルを閉じると、すべてのプロセスが強制終了され、「init」プロセス(pid 1を使用)に渡されないのはなぜですか?なぜなら、すべての子プロセスは、親の終了後に「init」プロセスによって採用されるからです。どうか、私の推論の違いと誤りを理解するのを手伝ってください。

また、可能であれば、システムコールを使用してこれを停止できますか?このためにはプログラムを使用する必要があると思いますsetsid()が、実際には正しくありません。

4

3 に答える 3

2

cnicutarで説明されているように、これはSIGHUP、制御端末に関連付けられているプロセスグループ内のすべてのプロセスに送信されるためです。このシグナルのハンドラーをインストールするか、完全に無視することができます。任意のプログラムの場合、nohupこの目的のために設計されたユーティリティを使用してプログラムを開始できます。

制御端末なしで、プロセスを新しいプロセスグループに配置することもできます。

于 2012-09-14T07:09:06.793 に答える
1

Linuxのターミナルを閉じると、彼のすべてのプロセスが終了するのに、「init」プロセスに渡されないのはなぜですか(pid 1を使用)

プロセスは制御端末を失っているため、カーネルはプロセスにを送信しますSIGHUP。のデフォルトのアクションはSIGHUP、プロセスを終了することです。

于 2012-09-14T06:44:33.930 に答える
0

これはhttp://www.digipedia.pl/usenet/thread/18802/10189/を理解するのに役立つと思い ます

于 2012-09-14T06:47:56.147 に答える