unix網絡編程筆記五

SIGCHLD信號

在前面的例子中服務器都是創建一個子進程來和客戶端進行交互,當客戶端和服務器斷開連接時服務器端和客戶端交互的進程便會終止,並且會向父進程發送一個SIGCHLD信號,父進程沒有對子進程善後的子進程在進程結束後我們稱之爲僵死進程,僵死進程會保存一些信息告知父進程,包括進程的id,終止狀態和資源利用信息等。

僵死進程會在內存中佔用我們的空間,因此我們希望消除僵死進程,通常是使用wait或者waitpid函數來處理僵死進程,因此可以捕捉這個信號並處理僵死進程。

下面是處理僵死進程的程序

void sig_chld(int signo)
{
pid_t pid;
int stat;
pid=wait(&stat);
printf("child %d end\n",pid);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章