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