久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久


Linux下多進程編程之fork()函數語法

分享到:
           

    fork()函數語法

    表(biao)1列出了fork()函數的語法要(yao)點。

表(biao)1 fork()函數語法要點(dian)

所需頭文件 #include <sys/types.h> /* 提供類型pid_t的定義 */
#include <unistd.h>
函數原型 pid_t fork(void)
函數返回值 0:子進程
子進程ID(大于0的整數):父進程
-1:出錯

    fork()函數的簡單(dan)示例程序如下:

    int main(void)
    {
        pid_t result;

        /* 調用fork()函數 */
        result = fork();
        /* 通過result的值來判斷fork()函數的返回情況,首先進行出錯處理 */
        if(result == -1)
        {
            printf("Fork error\n");
        }
        else if (result == 0) /* 返回值為0代表子進程 */
        {
            printf("The returned value is %d\n
            In child process!!\nMy PID is %d\n",result,getpid());
        }
        else /* 返回值大于0代表父進程 */
        {
            printf("The returned value is %d\n
            In father process!!\nMy PID is %d\n",result,getpid());
        }
        return result;
    }

    將(jiang)可執行(xing)程序下載到目(mu)標板上,運行(xing)結果如下:

    $ arm-linux-gcc fork.c –o fork (或者修改Makefile)
    $ ./fork
    The returned value is 76 /* 在父進程中打印的信息 */
    In father process!!
    My PID is 75
    The returned value is :0 /* 在子進程中打印的信息 */
    In child process!!
    My PID is 76

    從該實(shi)例(li)中(zhong)可以看出,使用fork()函數新建了一個子進(jin)程(cheng)(cheng),其中(zhong)的(de)父進(jin)程(cheng)(cheng)返(fan)回(hui)子進(jin)程(cheng)(cheng)的(de)進(jin)程(cheng)(cheng)號,而子進(jin)程(cheng)(cheng)的(de)返(fan)回(hui)值為0。

    由于fork()完整地(di)復(fu)制了父(fu)進(jin)(jin)程(cheng)(cheng)的(de)(de)(de)(de)整個(ge)地(di)址(zhi)空(kong)間,因此執(zhi)行速度是比(bi)較慢的(de)(de)(de)(de)。為了加快fork()的(de)(de)(de)(de)執(zhi)行速度,很多UNIX系統(tong)設計者創(chuang)(chuang)建了vfork()。vfork()也能創(chuang)(chuang)建新(xin)進(jin)(jin)程(cheng)(cheng),但它不產生父(fu)進(jin)(jin)程(cheng)(cheng)的(de)(de)(de)(de)副本。它是通過允許(xu)父(fu)子進(jin)(jin)程(cheng)(cheng)可訪(fang)問(wen)相同(tong)物理內(nei)存(cun),從而偽裝了對進(jin)(jin)程(cheng)(cheng)地(di)址(zhi)空(kong)間的(de)(de)(de)(de)真實(shi)復(fu)制,當(dang)子進(jin)(jin)程(cheng)(cheng)需要改變內(nei)存(cun)中的(de)(de)(de)(de)數(shu)據時(shi)才復(fu)制父(fu)進(jin)(jin)程(cheng)(cheng)。這(zhe)就(jiu)是著名的(de)(de)(de)(de)“寫操作時(shi)復(fu)制”(copy-on-write)技術。現在大(da)部分嵌入(ru)式Linux系統(tong)的(de)(de)(de)(de)fork()函數(shu)調(diao)用(yong)已(yi)經采用(yong)vfork()函數(shu)的(de)(de)(de)(de)實(shi)現方式,例如uClinux所(suo)有的(de)(de)(de)(de)多進(jin)(jin)程(cheng)(cheng)管理都通過vfork()來實(shi)現。

    本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》

   熱點鏈(lian)接:

   1、Linux下多進程編程之fork()函數說明
   2、Linux下多任務系統之線程介紹
   3、Linux下進程的內存結構
   4、Linux下進程的創建、執行和終止
   5、Linux下的進程結構

更多新聞>>