wait()
或waitpid()
处理子进程退出状态。init
进程未及时处理,可能变为僵尸进程。read()
)阻塞,无法及时处理子进程退出信号。SIGCHLD
信号时出错,或未在信号处理函数中调用回收函数。ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
定位僵尸进程及其父进程,用kill -9 <父进程PID>
杀死父进程,使僵尸进程被init
进程回收。wait()
或waitpid()
回收子进程资源,或设置信号处理函数捕获SIGCHLD
信号并处理。cron
定时任务或systemd
服务定期执行清理脚本,自动处理僵尸进程。