SIGCHLD信号
在前面的例子中服务器都是创建一个子进程来和客户端进行交互,当客户端和服务器断开连接时服务器端和客户端交互的进程便会终止,并且会向父进程发送一个SIGCHLD信号,父进程没有对子进程善后的子进程在进程结束后我们称之为僵死进程,僵死进程会保存一些信息告知父进程,包括进程的id,终止状态和资源利用信息等。
僵死进程会在内存中占用我们的空间,因此我们希望消除僵死进程,通常是使用wait或者waitpid函数来处理僵死进程,因此可以捕捉这个信号并处理僵死进程。
下面是处理僵死进程的程序
void sig_chld(int signo)
{
pid_t pid;
int stat;
pid=wait(&stat);
printf("child %d end\n",pid);
}