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