#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
/*
vfork和fork的区别:
.vfork创建的子进程和父进程共享线性地址空间;fork创建的子进程具有独立的线性地址空间
.vfork先执行子进程;fork子进程和父进程的执行顺序是随机的
.vfork创建的子进程中只有在调用exit()或者execve()函数之后,父进程才可能被成功调用
*/
int main(void)
{
pid_t fpid;
int count = ;
fpid = vfork();
if (fpid == -) {
perror("MSG");
}
else if (fpid > ) {
printf("parrent: %d\n", getpid());
count++;
printf("count: %d\n", count)
}
else if (fpid == ) {
printf("child: %d\n", getpid());
count++;
printf("count: %d\n", count);
exit();
}
return ;
}
/*
.执行结果:
child:
count:
parrent:
count:
.如果子进程没有调用exit(), 执行结果为:
child:
count:
parrent:
count:
重复上面的打印结果
*/