fork()函式用來建立子程序。
下面是乙個簡單的例子:
#include #include int main(int argc, const char * argv) else
}
列印的結果如下:
pid: 552
father pid: 549
child pid: 552
以下是一些注意點:
1) 之前在vs上想要用,結果發現根本沒有這個標頭檔案;因為是類unix系統才有的;上面的**在mac os上測試ok。
2) fork()是用來建立子程序的,建立之後子程序是父程序的副本,子程序獲得父程序的資料空間、堆和棧的副本,注意兩者並不是共享的。父子兩者僅共享**段。這個是以前的實現,現在的話一般不會直接去複製,而是寫時複製(copy-on-write)。
3) fork()之後父子程序的執行順序是不確定的。
4) fork()之後父程序的所有開啟檔案描述符都被複製到子程序中,父子程序的每個相同的開啟描述符共享乙個檔案表項。
fork()的兩種用法:
1. 乙個父程序希望複製自己,使父子程序同時執行不同的**段。
比如在網路服務程式中,父程序等待客戶端的服務請求。當請求到達時,父程序呼叫fork()使子程序處理此請求;而父程序繼續等待下乙個請求。
2. 乙個程序要執行乙個不同的程式。
這個在shell下比較常見,這種情況下,fork()之後一般立即接exec函式。
C語言 fork函式
一 fork函式的使用 fork函式被宣告在unistd.h 標頭檔案中,包含 include 這個標頭檔案即可呼叫。int main else printf 統計結果是 d n count return 0 fork 之後的語句父程序和子程序都會執行,新主要用pid來區分,程序也會分配到新的記憶體...
c 中的fork函式 FORK()函式
乙個程序,包括 資料和分配給程序的資源。fork 函式通過系統呼叫建立乙個與原來程序幾乎完全相同的程序,也就是兩個程序可以做完全相同的事,但如果初始引數或者傳入的變數不同,兩個程序也可以做不同的事。乙個程序呼叫fork 函式後,系統先給新的程序分配資源,例如儲存資料和 的空間。然後把原來的程序的所有...
C語言基礎 函式
一 函式 掌握 1 定義 是乙個實現某種功能的 塊。作用 1 實現 復用,減少冗餘 2 維護方便。暫停停止 快進快退 2 函式的分類 1 main函式 每個c程式有且僅有乙個 2 庫函式 3 自定義函式 3 函式的宣告 定義和使用 掌握 1 宣告 格式 返回值型別 函式名 形式引數列表 函式三要素 ...