程式碼:
static void f1(),f2();

int main()
{
        f1();
        f2();
        printf("main\n");
        _exit(0);
        printf("f3\n");
}

static void f1()
{
        printf("f1\n");
        if(vfork()<-1)
                printf("vfork error");
}
static void f2()
{
        printf("f2\n");
}
執行結果:
f1
f2
main
f3
程式碼:
將 vfork 放進 main 中,也就是將 f1 放進 main 中。
static void f2();

int main()
{
        printf("f1\n");
        if(vfork()<-1)
                printf("vfork error");
        f2();
        printf("main\n");
        _exit(0);
        printf("f3\n");
}

static void f2()
{
        printf("f2\n");
}
執行結果:
f1
f2
main
f2
main
結論:
  1. vfork 如果不是放在 main 函數中,則下次 parent 重新執行是從 _exit() 處開始。
  2. vfork 如果將之放在 main 函數中,則下次 parent 重新執行是從 vfork() 處開始。
  3. 別問我為啥,這就是它奇妙之處所在。
創作者介紹

邱小新の工作筆記

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()