Linux如何避免進程僵死 |
發(fā)布時間: 2012/8/10 14:18:29 |
一個進程終止但是父進程尚未進行回收,就是僵死。
避免僵死可以調用waitpid等待子進程結束,但是其間父進程一直阻塞。 更好的辦法是調用兩次fork函數(shù)。 源代碼如下: #include #include #include int main() { pid_t pid; if((pid = fork()) < 0)//出錯 { perror("fork!n"); } else if(pid == 0)//子進程1 {//子進程中創(chuàng)建進程2 if((pid =fork()) < 0)//出錯 { perror("fork!n"); } else if(pid > 0)//進程1 { exit(0);//退出 } else//子進程2 { sleep(2); printf("second child, parent pid = %dn", getpid()); exit(0); } } else//父進程 { sleep(3); printf("parent!n"); exit(0); } } 本文出自:億恩科技【www.allwellnessguide.com】 |