//vfork函数 也可以创建进程,与fork有什么区别
/*
关键区别一
vfork 直接使用父进程存储空间,不拷贝。
关键区别二
vfork 保证子进程先运行,当子进程调用exit退出后,父进程才执行
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
pid_t pid;
int cnt = 0;
pid = vfork();//vfork会先执行子进程 等子进程exit退出后在执行父进程 父子进程共享内存空间
if(pid > 0){
while(1){
printf("cnt=%d\n",cnt);
printf("this is father print,pid = %d\n",getpid());
sleep(3);
}
}
else if(pid == 0){//子进程直接使用父进程空间 不拷贝
while(1){
printf("this is child print,pid = %d\n",getpid());
sleep(1);
cnt++;//这里子进程修改了cnt的值也会影响父进程里的cnt
if(cnt==3){
exit(0);
}
}
}
return 0;
}```