在Linux系统中,除了fork()可以创建子进程之外,还有vfork()可以创建子进程,为了弄清楚这两个函数创建子进程有何区别,首先我们来看如何利用vfork()进行子进程的创建:
#include #include #include #include int main() { pid_t pid; pid = vfork(); if(pid == 0) printf("the child ID = %d \n",getpid()); if(pid > 0) printf("the father ID = %d \n",getpid()); if(pid < 0) printf("fork failed");
return 0; }
在cygwin中运行,结果如下:
carl.ma@CNQDSX-000211 ~/3_vfork
$ ./vfork.exe
the father ID = 10236
the child ID = 8324
从运行结果上看,fork()和vfork()都可以创建子进程,二者同时成功的创建了子进程,那么二者有什么区别和联系呢?