Posted on 2009-01-06 16:05
Prayer 閱讀(4368)
評論(0) 編輯 收藏 引用 所屬分類:
LINUX/UNIX/AIX
一旦調用了fork(),系統就用父進程的代碼段產生一個子進程,父子進程是公用同一個代碼段,
顯然,在fork()調用的時候,fork()函數本身,也將出現在兩個進程中,但fork()再子進程中返回0,在子進程中返回子進程的id,父子進程雖然公用代碼段,但不公用數據段,所以pid=fork()分別在父子進程執行以后,各自的pid變量是不同的。
所以讀取pid的值就可以判斷代碼段當前處于哪個進程中,在子進程中pid就是子進程的id,
父進程中的fork()返回兩次,0代表在父進程內,>0,這個返回值就是子進程的進程號,同時代表現在處在子進程中。子進程復制父進程的代碼執行(從fork()返回處開始執行)