1. 程式人生 > 其它 >vfork建立程序

vfork建立程序

技術標籤:linux

vfork函式也可以建立程序,返回值與fork的返回值一樣,與fork有什麼區別呢?

  • 區別一:vfork函式直接使用父程序的儲存空間,不拷貝。(fork:子程序拷貝父程序的資料段,程式碼段;vfork:子程序與父程序共享資料段)

  • 區別二:vfork函式:保證子程序先執行,當子程序呼叫exit退出後,父程序才執行。fork函式:父子程序的執行順序不確定,是由程序排程決定的

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main() { pid_t pid; pid = vfork(); int cnt = 0; if(pid > 0){ while(1){ printf("this is father print, pid=%d\n",getpid()); sleep(3); printf("cnt=%d\n",cnt); exit
(0); } } else if(pid == 0){ while(1){ printf("this is child print, child pid=%d\n",getpid()); sleep(3); cnt++; if(cnt == 3){ exit
(0); } } } return 0; }

執行結果:
在這裡插入圖片描述