客户端关闭,产生了僵尸进程,用SIGCHLD信号
- defunct 失效的,ps -ef|grep defunct 僵尸进程
- 第一种方法:
signal(SIGCHLD,SIG_IGN)
signore忽略 - 第二种方法:
signal(SIGCHLD,handle_sigchld)
-wait(NULL)
捕获子进程特殊状态
void handle_sigchld(int sign)
{
wait(NULL);
}
wait
仅等待第一个子进程就返回,不能多个 因此,用 waitpid
不确定是否全部返回
void handle_sigchld(int sign)
{
\*wait(NULL);*\
while(waitpid(-1,NULL,WNOHANG)>0)//-1所有子进程返回,waitpid轮询,wnohang不挂起
;
}