![]() |
||||||||
Linux下多進(jìn)程編程之fork()函數(shù)語法 |
||||||||
fork()函數(shù)語法 表1列出了fork()函數(shù)的語法要點(diǎn)。 表1 fork()函數(shù)語法要點(diǎn)
fork()函數(shù)的簡(jiǎn)單示例程序如下: int main(void) 將可執(zhí)行程序下載到目標(biāo)板上,運(yùn)行結(jié)果如下: $ arm-linux-gcc fork.c –o fork (或者修改Makefile) 從該實(shí)例中可以看出,使用fork()函數(shù)新建了一個(gè)子進(jìn)程,其中的父進(jìn)程返回子進(jìn)程的進(jìn)程號(hào),而子進(jìn)程的返回值為0。 由于fork()完整地復(fù)制了父進(jìn)程的整個(gè)地址空間,因此執(zhí)行速度是比較慢的。為了加快fork()的執(zhí)行速度,很多UNIX系統(tǒng)設(shè)計(jì)者創(chuàng)建了vfork()。vfork()也能創(chuàng)建新進(jìn)程,但它不產(chǎn)生父進(jìn)程的副本。它是通過允許父子進(jìn)程可訪問相同物理內(nèi)存,從而偽裝了對(duì)進(jìn)程地址空間的真實(shí)復(fù)制,當(dāng)子進(jìn)程需要改變內(nèi)存中的數(shù)據(jù)時(shí)才復(fù)制父進(jìn)程。這就是著名的“寫操作時(shí)復(fù)制”(copy-on-write)技術(shù)。現(xiàn)在大部分嵌入式Linux系統(tǒng)的fork()函數(shù)調(diào)用已經(jīng)采用vfork()函數(shù)的實(shí)現(xiàn)方式,例如uClinux所有的多進(jìn)程管理都通過vfork()來實(shí)現(xiàn)。 本文選自華清遠(yuǎn)見嵌入式培訓(xùn)教材《從實(shí)踐中學(xué)嵌入式Linux應(yīng)用程序開發(fā)》 熱點(diǎn)鏈接:
1、Linux下多進(jìn)程編程之fork()函數(shù)說明 |