前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >当fork()遇上for循环~

当fork()遇上for循环~

作者头像
种花家的奋斗兔
发布于 2020-11-13 08:11:47
发布于 2020-11-13 08:11:47
59600
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim test.c

写入如下代码

#include<unistd.h>
#include<stdio.h>
int main()
{
    for(int i=0;i<2;i++)
    {
        fork();
        printf("========\n");
        printf("i=%d\n",i);
    }
    printf("++++++++++++++\n");
    sleep(5);
    return 0;
}


gcc -o test test.c   编译

./test   运行

输出结果如下

注:这里使用sleep的原因是为了更好地显示。读者可以注释掉sleep,编译运行一下。

可以看出:

i=0 输出两次 所以第一次循环 创建了一个子进程

i=1 输出四次 第二次循环创建了两个子进程。

简图如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一个很有趣的fork面试程序,和大家分享下经验
这两天逛了下酷壳大神的blog(http://coolshell.cn/articles/7965.html),偶然看到一个关于fork小问题,虽然之前想通了,不过还是值得回味并且和大家分享下的。
早起的鸟儿有虫吃
2021/08/13
3310
【Linux】进程控制
若父子进程数据都不修改,则父子进程指向同一个物理地址, 若子进程数据修改,则拷贝一个物理空间,将新的地址填到子进程对应的页表中,使子进程重新映射,访问到新的空间 进程的内核数据结构,父子各自有一套,彼此双方互不影响, 代码和数据通过写时拷贝的反方式,实现分开
lovevivi
2023/04/28
2K0
【Linux】进程控制
【Linux进程控制】二、进程控制——fork()系统调用深度刨析
fork()用于创建一个子进程,我们在shell下执行一个命令其实也是通过fork()实现的,fork()是Linux下最基本的一个系统调用。fork()最大的特点就是一次调用,两次返回,两次返回主要是区分父子进程,因为fork()之后将出现两个进程,所以有两个返回值,父进程返回子进程ID,子进程返回0。
mindtechnist
2024/08/08
1.1K0
【Linux进程控制】二、进程控制——fork()系统调用深度刨析
【Linux】进程的程序替换
红框中的代码实际上是父进程的代码,在没有执行fork之前代码就有了,在没有创建子进程之前,父进程的代码加载到内存了,子进程被创建出来是没有独立的代码,这个代码是父进程的代码,父进程通过if判断分流让子进程去跑了
lovevivi
2023/04/28
2K0
【Linux】进程的程序替换
2013年 腾讯笔试题:fork()
如果你对fork()的机制比较熟悉的话,这个题并不难,输出应该是6个“-”,但是,实际上这个程序会很tricky地输出8个“-”。
bear_fish
2018/09/14
4500
2013年 腾讯笔试题:fork()
Linux——进程管理篇(详解fork和exec)
文章目录 Linux——进程管理篇(详解fork和exec) 🚗如何在Linux编写与运行代码 编写 编译 运行 🚗进程管理 fork system exec 🚗总结 Linux——进程管理篇(详解fork和exec) 🚀🚀这篇文章,主要的目的就是帮助同学们完成操作系统的实验,因为考虑到很多同学第一次接触Linux,相当不习惯命令行的操作方式,所以我会详细来介绍,相信只要跟着步骤一步一步来,就一定能完成我们的实验,好了,我们接下来就来介绍吧! ---- 🚗如何在Linux编写与运行代码 🚀🚀做实验,首
小点点
2023/03/18
2.8K0
Linux——进程管理篇(详解fork和exec)
一道FORK的面试
作者:陈皓 出处:https://coolshell.cn/articles/7965.html
Linux阅码场
2019/09/25
7220
一道FORK的面试
Linux系统编程-进程创建(fork)、外部程序调用(exec)
在linux中fork函数是非常重要的函数,它可以从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。
DS小龙哥
2022/02/17
3.1K0
Linux系统编程-进程创建(fork)、外部程序调用(exec)
Linux-程序替换
  在Linux系统中,进程程序替换是一种重要的操作,通过进程程序替换,程序可以更新自己的代码和数据,让进程富有动态性和灵活性,话不多说,开始今天的话题。
用户11029129
2024/06/04
1590
Linux-程序替换
关于signal和fork的思考
函数的作用的创建一个进程,这个函数会返回两次,可能有三种不同的返回值。  1. 出错返回-1  2. 返回0,表示是子进程  3. 返回大于0,表示是父进程
xcywt
2022/05/09
4860
linux中fork()函数详解(原创!!实例讲解)
转载于http://blog.csdn.net/jason314/article/details/5640969
bear_fish
2018/09/14
4.1K0
linux中fork()函数详解(原创!!实例讲解)
【Linux】从 fork() 到 exec():理解 Linux 进程程序替换的魔法
进程程序替换是指一个进程用另一个新的可执行程序来替换当前正在执行的程序,这个过程通过通过exec系列函数完成。在Linux或UNIX系统中,进程程序替换通常发生在一个进程通过fork()创建了子进程之后,子进程用exec()函数加载和执行另一个程序。 也就是说,进程程序替换就是在不改变进程的PID(进程ID)的情况下,用一个全新的程序来替换当前的内存空间和执行内容。 当程序调用一种exec函数时,该进程的用户空间代码和数据完全被新的程序替换,从新程序的启动例程开始执行。
Yui_
2024/10/21
1430
【Linux】从 fork() 到 exec():理解 Linux 进程程序替换的魔法
fork() 函数详解
fork() 函数是 linux/unix 下一种特别的创建子进程的函数,它不同与 Windows,这个函数在执行成功后会有两个返回值,一个返回值==0代表创建了子进程,一个返回值大于0代表还是当前程序进程,而这个大于0的值就是创建的子进程的进程PID。这个函数比较抽象,我们来看一下代码并对比一下图片就能知道具体该函数的用途了。
我与梦想有个约会
2023/10/20
2820
fork() 函数详解
60秒问答:请问下面的程序一共输出多少个"hello,world”
当i=1,会继续执行for循环---P2先fork()出一个子进程P3,同时再输出一个'-'。
早起的鸟儿有虫吃
2021/08/13
1.5K0
【Linux进程控制】五、wait()函数——子进程回收
僵尸进程:子进程结束,父进程没有回收子进程的资源(PCB),这个资源必须要由父进程回收,否则就形成僵尸进程。
mindtechnist
2024/08/08
1560
【Linux进程控制】五、wait()函数——子进程回收
Python Web学习笔记之并发编程的孤儿进程与僵尸进程
1、前言   之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。 2、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作
Jetpropelledsnake21
2018/06/20
6630
父子进程的故事:解读Linux中的fork机制
在Linux系统中,进程是操作系统最重要的执行单元,而父子进程的创建与管理更是系统资源分配和任务并行的关键。通过fork函数,Linux能够快速高效地复制一个进程,使得父子进程协同工作成为可能。理解父子进程的运行机制不仅有助于掌握系统编程的核心技能,更能为优化资源利用与提高程序性能提供理论基础。本文将带你从基础原理出发,解析Linux父子进程的运行特性、fork的核心机制及其在实际开发中的应用。
suye
2025/03/15
1160
父子进程的故事:解读Linux中的fork机制
Linux进程控制
进程是操作系统中的一个重要概念,它是一个程序的一次执行过程,程序是进程的一种静态描述,系统中运行的每一个程序都是在它的进程中运行的。
xxpcb
2020/08/04
2K0
Linux之进程控制
退出码是用来标识一个进程任务执行结果的情况。因为成功只有一种情况,而失败的情况很多,因此,一般情况下0表示执行成功,非0表示执行失败。非0的数字不同,所表示的错误不同。系统对于退出码一般都有着相应的文字藐视,当然我们也可以自定义,也可以直接使用系统给定的映射关系。(例如,strerror这个函数)
摘星
2023/10/15
2040
Linux之进程控制
【Linux】进程初步理解
电脑里面的硬件不是随便就能构成计算机,这些硬件是按照一定的规则去组装电脑的。 计算机的核心工作就是通过一定的输入设备,把数据交给计算机cpu,而cpu经过一定的设备再显示出结果。 计算机的构成遵循冯诺依曼体系结构:
zxctscl
2024/04/10
910
【Linux】进程初步理解
相关推荐
一个很有趣的fork面试程序,和大家分享下经验
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验