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