web-dev-qa-db-ja.com

Linuxは、孤立したゾンビプロセスを継承するときに、 `SIGCHLD`をʻinit`に送信しますか?

Linuxは、孤立したゾンビプロセス(元の親によって取得されていないプロセス)を継承するときに、SIGCHLDinit(PID 1プロセス)に送信しますか?

2
user3368561

うん。私はそれをテストしました。そして、これがどこで発生するかを確認できます Linuxコード内


テスト:ネストされたシェルを開始します。他の場所から、kill -s STOP親シェル。次に、kill -s KILL子シェル、次に親。

注意:

たとえば、これをgnome-terminal内で試してみると、リーパーはPID 1ではなく、サブリーパーであるプロセスsystemd --userになります。

また、systemdはsignalfdを使用してシグナルを処理します。したがって、systemdプロセスでstrace -pを実行すると、信号が受信されていることはわかりません。代わりに、systemdがepoll_wait()からウェイクアップし、ファイル記述子に対してread()を実行することがわかります。

ls -l /proc/<PID>/fd/<FD>を使用して、ファイル記述子番号がsignalfdであることを確認できます。 anon_inode:[signalfd]と表示されます。

1
sourcejedi