1. 程式人生 > >Linux下復雜PC問題——多進程編程/信號量通信/共享存儲區

Linux下復雜PC問題——多進程編程/信號量通信/共享存儲區

types 進程 子進程 mic 多進程編程 代碼 spa 類型 作用

進程相關函數

pid_t fork();

頭文件unistd.h,sys/types.h

作用:建立一個新進程(子進程),子進程與原進程(父進程)共享代碼段,並擁有父進程的其他資源(數據、堆棧等)的一個副本。(由於繼承了父進程的所有狀態,子進程將從fork處往下運行)。(說明:子進程繼承父進程的所有數據,但執行的時候,兩者的數據是分開的,相互不再影響。fork函數復制的數據段和堆棧,只是"邏輯"上的,並非"物理"上的,也就是說,實際執行fork時,物理空間上兩個進程的數據段和堆棧段都還是共享著的,當有一個進程寫了某個數據時,這時兩個進程之間的數據才有了區別,系統就將有區別的"頁"從物理上也分開。系統在空間上的開銷就可以達到最小。)

參數:無

返回值pid_t類型,是int的別名。若成功調用,返回兩個值。fork()函數在父進程中返回子進程的進程ID,而在子進程中返回0。這一特性可用於使進程識別自身是父進程或是子進程。如果出現錯誤,返回負值。

信號量相關函數

Linux下復雜PC問題——多進程編程/信號量通信/共享存儲區