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;
}