当Linux继承孤儿僵尸进程(未被其原始父进程回收的进程)时,它是否会发送SIGCHLD
到(PID 1进程)?init
答案1
是的。我测试过了。你可以看到这种情况发生在哪里在Linux代码中。
测试:启动嵌套 shell。来自其他地方的kill -s STOP
父 shell。然后是kill -s KILL
子 shell,然后是父 shell。
笔记:
例如,如果您在内部尝试此操作gnome-terminal
,收割机将不是 PID 1。它将是一个子收割机,即进程systemd --user
。
另外,systemd
使用 signalfd 处理信号。因此,当您strace -p
在 systemd 进程上运行时,您将不会看到收到信号。相反,您将看到 systemd 从 epoll_wait() 唤醒并对文件描述符执行 read()。
您可以使用 确认文件描述符编号是 signalfd ls -l /proc/<PID>/fd/<FD>
。它会说anon_inode:[signalfd]
。