父进程应如何处理子进程退出并避免产生僵尸进程?
简答题中等954 次浏览
参考答案与解析
# 核心结论
子进程退出后,内核会释放其地址空间和大部分资源,但仍保留进程标识、退出码及资源统计,等待父进程读取;这段时间的子进程就是僵尸进程。父进程必须建立明确的回收策略:可以主动调用wait()或waitpid(),也可以捕获SIGCHLD后循环执行非阻塞的waitpid()。若程序使用事件循环,信号处理函数应只做异步信号安全的最小通知,再由正常控制流完成回收、日志记录和重启决策。
# 底层机制
子进程终止时,内核通常向父进程发送SIGCHLD。普通信号一般只表示“存在待处理事件”,不保证为每个退出的子进程分别排队。多个子进程在短时间内退出时,父进程可能只观察到一次待处理信号。因此,收到通知后只
