我正在编写一个使用fork()来为客户端连接生成处理程序的服务器.服务器不需要知道分叉进程会发生什么 – 它们自己工作,当它们完成时,它们应该只是死而不是变成僵尸.什么是简单的方法来完成这个?
解决方法
有几种方法,但使用
sigaction
与SA_NOCLDWAIT在父进程中可能是最简单的方法之一:
struct sigaction sigchld_action = { .sa_handler = SIG_DFL,.sa_flags = SA_NOCLDWAIT }; sigaction(SIGCHLD,&sigchld_action,NULL);