设想如下情况:现有进程A,fork产生子进程B,子进程B调用exit(0),这时B会向父进程A发送SIGCHLD信号,父进程A选择忽略掉这个信号,进程B变为僵死进程。
那么如果此时A正常结束了,B就应该会转交成为init进程的子进程,此时会发生什么?B会不会重新发送SIGCHLD信号给init呢?如果不会的话,B最后将如何结束?
设想如下情况:现有进程A,fork产生子进程B,子进程B调用exit(0),这时B会向父进程A发送SIGCHLD信号,父进程A选择忽略掉这个信号,进程B变为僵死进程。
那么如果此时A正常结束了,B就应该会转交成为init进程的子进程,此时会发生什么?B会不会重新发送SIGCHLD信号给init呢?如果不会的话,B最后将如何结束?
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答800 阅读✓ 已解决
1 回答3.3k 阅读
B 不会再发送任何信号,这种僵尸进程最终被 init 进程(pid=1)自动回收。
请参考
https://en.wikipedia.org/wiki...