What the different between fork() and vfork()

  1. 在子程序呼叫exec 或 exit前, 子程序都會被保證優先執行
  2. vfork(): 父程序與子程序共用位址空間(參考Ex_1)

Ex_1:

pid_t pid;
int test = 0;

printf("before vfork");

pid = vfork();

if(pid<0)
    printf("error in vfork");
else if(pid == 0)            //child
{
    test++;
    _exit(0);                //如果在這裡改用exit(0), 下面的parent就不會印出test等於多少.
                             //是因為exit會去清除並關閉所有的I/O stream
                             //等parent呼叫到printf,只會回傳-1
}

//parent
printf("test: %d", test);
exit(0);

output:

before vfork

test: 1


results matching ""

    No results matching ""