2.6vfork创建进程(第二阶段)
理论知识


代码展示
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
pid_t pid;
pid = vfork();
if(pid > 0){
while(1){
printf("this is father print:%d\n",getpid());
sleep(1);
}
}else if(pid == 0){
while(1){
printf("this is child print,child pid = %d\n",getpid());
sleep(1);
}
}
return 0;
}
#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("this is father print:%d\n",getpid());
sleep(1);
printf("cnt=%d\n",cnt);
}
}else if(pid == 0){
while(1){
printf("this is child print,child pid = %d\n",getpid());
sleep(1);
cnt++;
if(cnt == 3){//
exit(0);
}
}
}
return 0;
}

本文介绍了vfork()函数在创建进程时的第二阶段,通过代码示例展示了父进程和子进程如何并发运行并进行交互。在第一个示例中,父进程和子进程无限循环打印其PID,而在第二个示例中,子进程在计数达到3后退出,父进程则持续打印并计数。这两个例子深入解析了vfork的工作机制和父子进程的同步问题。
1814

被折叠的 条评论
为什么被折叠?



