2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > fork 循环创建多个子进程

fork 循环创建多个子进程

时间:2021-11-27 07:26:11

相关推荐

fork 循环创建多个子进程

循环创建多个子进程

对于以下循环创建进程是什么样的呢?

int i = 0;while(i < 3){fork();/*功能代码*/i++;}

子进程创建如下图

学习笔记

对于仅含有一个 fork()的循环体,循环n次后,共有2^n个进程(包含最初始的父进程);若fork()在循环体的开端,循环体的代码将被执行(2^(n+1)-2)次;事实上,我们一般只让父进程fork,不让子进程继续fork,所以当 fork()返回值为0时,跳出循环,这样的话,循环n次,创建n个子进程;

练习

通过命令行参数指定创建进程的个数,每个进程休眠 1S 打印自己是第几个被创 建的进程。如:第 1 个子进程休眠 0 秒打印:“我是第 1 个子进程”;第 2 个进程休眠 1 秒打 印:“我是第 2 个子进程”;第 3 个进程休眠 2 秒打印:“我是第 3 个子进程”。

目标

通过该练习掌握框架:循环创建 n 个子进程,使用循环因子 i 对创建的子进程加以区分;

代码

#include <stdio.h>#include <unistd.h>int main(int argc, char *argv[]){int i, n, pid;i = 0;n = *argv[1]-'0';while(i < n){pid = fork();if(!pid){break;}i++;}sleep(i);if(!pid){printf("I'm the %d child process.\n", i+1);}else if(pid > 0){printf("I'm the parent process %d.\n", i);}return 0;}

注:

每个子程序都不会执行i++;

运行结果

/07/24 13:03

@luxurylu

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。