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