创建单个子进程_那些年踩过的“坑”-CSDN博客
二.实例_fork()循环创建多个子进程#include"stdio.h" #include"stdlib.h" #include"unistd.h" int main(){ pid_t pid; printf("Begin...n"); int i = 0; for(i = 0;i < 5;i++){ pid = fork(); if(pid == -1){ perror("fork error!"); exit(1); } else if(pid == 0){ break; // 父进程每创建一个子进程就跳出循环,防止子进程继续创建进程,进程数会以 2的指数在增长(类似于 细菌分类) } } if(i < 5){ sleep(i); // 第 i 个子进程等待 i s,从而实现结果顺序输出 printf("i am %d child,pid = %u,ppid = %un",i+1,getpid(),getppid()); } else{ // 父进程等待 5 s,使其在子进程之后进行输出 sleep(i); printf("i am parent!n"); } return 0; }
注:
1.利用fork()函数循环创建子进程时,一定要在父进程创建每一个子进程时使用 break 将其跳出, 否则 之后子进程也会执行共享的代码创建进程,进程数就会以 2的指数在增长,而不是我们单 纯想要创建进程的个数了;
2.连续执行 5个fork()函数,并不能实现 创建 5 个子进程的目的;
2.sleep() 函数的用法,我们之前已经讲过,就不再赘叙了;
创建单个子进程_那些年踩过的“坑”-CSDN博客
参考资料:
1.B站---Linux全套教程
写在最后:
该博客是本人学习的一些总结,如果各位有不同见解,可以评论提出或者与我联系改正,谢谢阅览!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)