Linux如何避免進(jìn)程僵死 |
發(fā)布時間: 2012/8/10 14:18:29 |
一個進(jìn)程終止但是父進(jìn)程尚未進(jìn)行回收,就是僵死。
避免僵死可以調(diào)用waitpid等待子進(jìn)程結(jié)束,但是其間父進(jìn)程一直阻塞。 更好的辦法是調(diào)用兩次fork函數(shù)。 源代碼如下: #include #include #include int main() { pid_t pid; if((pid = fork()) < 0)//出錯 { perror("fork!n"); } else if(pid == 0)//子進(jìn)程1 {//子進(jìn)程中創(chuàng)建進(jìn)程2 if((pid =fork()) < 0)//出錯 { perror("fork!n"); } else if(pid > 0)//進(jìn)程1 { exit(0);//退出 } else//子進(jìn)程2 { sleep(2); printf("second child, parent pid = %dn", getpid()); exit(0); } } else//父進(jìn)程 { sleep(3); printf("parent!n"); exit(0); } } 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |