fork函数跟vfork函数一样能够创建进程,它们主要有两个区别
(1)区别一:
vfork直接使用父进程存储空间,不拷贝。
(2)区别二:
vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。
一直运行子进程
调用exit退出子进程
运行三秒后父进程开始运行
代码如下:
#include <stdio.h> #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> int main() { pid_t pid; int cnt = 0; pid = vfork(); if(pid > 0) { while(1){ printf("cnt=%d\n",cnt); printf("this is father precess, pid = %d\n",getpid()); sleep(1); } } else if(pid == 0){ while(1){ printf("this is chilid precess, pid = %d\n",getpid()); sleep(1); cnt++; if(cnt == 3){ exit(0); break; } } } return 0; }