在講一次fork和兩次fork之前,有必要先來簡單講解一下wait的作用
1、阻塞當前程序
2、獲得子程序退出的相關資訊(**殭屍程序)
子程序不返回,父程序後邊的內容就沒法執行。
注:wait函式只能在有子程序的父程序中呼叫。
我們使用fork()函式建立乙個子程序出來往往是為了父子程序能夠同時執行兩段**。如果在父程序中不寫wait()會導致子程序在退出後變成殭屍;但是使用wait()又會導致父程序阻塞,只有等子程序退出後才能繼續執行,相當於依然是單程序。對於使用wait帶來的問題,可以使用兩次fork來解決。
所以區別就是:使用wait時一次fork實現的其實也就是單程序,兩次fork的話可以實現多個程序同時執行。
怎麼通過兩次fork實現多程序的過程
第一次fork 建立出乙個子程序,然後父程序wait(),
第二次fork 子程序再建立乙個子程序,也就相當於有了乙個
「孫子程序」。
然後將第一次fork出來的子程序結束掉,它的父程序wait()不再阻塞,可以繼續執行。
此時的「孫子程序」就變成了孤兒程序,被託管到「孤兒院」(1號程序)。
現在「爺爺程序」和「孫子程序」的執行互不影響,實現了多個程序的同時執行。
關於兩次fork
兩次fork 的作用 首先,要了解什麼叫殭屍程序,什麼叫孤兒程序,以及伺服器程序執行所需要的一些條件。兩次fork 就是為了解決這些相關的問題而出現的一種程式設計方法。孤兒程序 孤兒程序是指父程序在子程序結束之前死亡 return 或exit 如下圖1所示 在一定時間內,當系統發現孤兒程序時,ini...
關於兩次fork
兩次fork 的作用 首先,要了解什麼叫殭屍程序,什麼叫孤兒程序,以及伺服器程序執行所需要的一些條件。兩次fork 就是為了解決這些相關的問題而出現的一種程式設計方法。孤兒程序 孤兒程序是指父程序在子程序結束之前死亡 return 或exit 如下圖1所示 在一定時間內,當系統發現孤兒程序時,ini...
關於兩次fork
我覺得這裡還有些重要的東西沒講,比如setsid 參見apne 8 11.兩次fork 的作用 首先,要了解什麼叫殭屍程序,什麼叫孤兒程序,以及伺服器程序執行所需要的一些條件。兩次fork 就是為了解決這些相關的問題而出現的一種程式設計方法。孤兒程序 孤兒程序是指父程序在子程序結束之前死亡 retu...