Linuxは、孤立したゾンビプロセス(元の親によって取得されていないプロセス)を継承するときに、SIGCHLD
をinit
(PID 1プロセス)に送信しますか?
うん。私はそれをテストしました。そして、これがどこで発生するかを確認できます 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]
と表示されます。