當父程序不等待子程序退出,在子程序退出前就結束了生命,此時子程序就變成了孤兒程序。在linux系統中為了避免孤兒程序,init(pid=1)專門收留孤兒程序,變成孤兒程序的父程序。
1 #include
2 #include
3 #include
4 #include
5/*孤兒程序*/
6int
main()
716if(pid==0)
1731}32
}33return0;
34}
@embed_learn:
~$ .
/a.out
the father process id running ! fatherpid=
4868
the child process is running ! childpid=
4869 fatherpid=
1 clc@embed_learn:
~$ the child process is running ! childpid=
4869 fatherpid=
1 the child process is running ! childpid=
4869 fatherpid=
1 the child process is running ! childpid=
4869 fatherpid=
1 the child process is running ! childpid=
4869 fatherpid=
1 the child process will be exit !
從列印到的資訊可以看到,父程序沒有退出時(子程序並沒有退出),父程序的pid=4868.退出後父程序的pid=1.說明init收留了子程序。 模擬實現殭屍程序, 孤兒程序
在linux下程序有多種狀態以下就是我列舉的一些狀態 r執行狀態 running 並不意味著程序一定在執行中,它表明程序要麼在執行中要麼在執行佇列裡。s睡眠狀態 sleeping 意味著程序在等待事件的完成 這裡的睡眠有時候也會叫可中斷睡眠 interruptible sleep d磁碟休眠狀態 d...
模擬實現殭屍程序, 孤兒程序
殭屍狀態是乙個比較特殊的狀態。當程序退出並且父程序 使用wait 系統呼叫 沒有讀取到子程序退出的返回 時就會產生殭屍程序。殭屍程序會終止狀態保持在程序表中,並且會一直在等待父程序讀取退出狀態 所以,只要子程序退出,父程序還在執行,但父程序沒有讀取子程序狀態,子程序進入z狀態。從上圖我們可以看出,1...
孤兒程序 孤兒程序組 守護程序
1.孤兒程序的定義 定義1 該程序組的每個成員的父程序要麼是該組的成員,要麼在其它會話中。定義2 乙個程序不是孤兒程序組的條件是 該組有乙個程序,其父程序在屬於同一會話的另乙個組中。只要能夠滿足上面其中的任乙個定義,則此程序組就是孤兒程序組。可能讀起來比較拗口,看圖 1 中的例子可能會清楚點。圖 1...