首页 > 编程语言 >程序会输出几个a

程序会输出几个a

时间:2024-04-08 20:58:58浏览次数:14  
标签:fork 输出 stdout 几个 程序 int 循环 缓冲区 进程

int main(int argc, char* argv[])
{
    for (int i = 0; i < 3; i++) {
        printf("a\n");
        fork();
    } 
    return 0;
}

第一次循环:先打印一个a,fork()调用后会产生两个进程,一个父进程,一个子进程

第二次循环:每个进程先分别打印一个a,然后再分别产生两个进程

第三次循环:此时共有4个进程,每个进程先分别打印一个a,并产生两个进程

下面程序呢?为什么?
int main(int argc, char* argv[])
{
    for (int i = 0; i < 3; i++) {
        printf("a");
        fork();
    } 
    return 0;
}

第一次循环:先向stdout缓冲中写入一个字符a,调用frok(),并产生两个进程

第二次循环:在每个进程的stdout缓冲区中会先存放上一次循环产生的一个a,
然后在本次循环中在输入一个a。此时每个stdout缓冲区中有两个a
接着每个进程在调用fork(),分别再产生两个进程,此时有4个进程

第三次循环:在4个进程的stdout缓冲区中分别有2个a,在向缓冲区中输入一个a,此时共有3个a,
每个进程在调用fork,然后分别产生2个进程,此时共有8个进程,在每个进程的stdout缓冲区中分别有3个a

执行结束,连续输出8个a。

标签:fork,输出,stdout,几个,程序,int,循环,缓冲区,进程
From: https://www.cnblogs.com/notob/p/18122334

相关文章

  • 城市夜景视频素材去哪找?这几个网站一定要收藏好
    在这个以短视频为王的时代,我已经在剪辑的战场上奋斗了不知多少年。从早期的摸索到如今的游刃有余,我发现不管技术怎样进步,一点都没变的是:优质的素材始终是创作出色视频的关键。今天,我要和大家分享我的宝藏素材库,它们是我这些年来的秘密武器。九才素材网:说到九才素材网,这里就像......
  • 第六个OpenGL程序,Coordinate Systems 坐标系统 后续之 3D 1(这个图形有点奇怪)
    效果:代码main.cpp:#include<iostream>#include<glad/glad.h>#include<glfw3.h>#include"Shader.h"#defineSTB_IMAGE_IMPLEMENTATION#include<stb_image.h>#include<glm/glm.hpp>#include<glm/gtc/matrix_transfo......
  • 第六个OpenGL程序,Coordinate Systems 坐标系统
    效果: 代码main.cpp:#include<iostream>#include<glad/glad.h>#include<glfw3.h>#include"Shader.h"#defineSTB_IMAGE_IMPLEMENTATION#include<stb_image.h>#include<glm/glm.hpp>#include<glm/gtc/matrix_trans......
  • 免费的PDF转换小程序,无广告、无限制
    网上的PDF转换工具其实也不少,但大多数都是收费的,要么广告一大堆。于是自己整了一个免费且没有广告的PDF转换小程序,主要的功能有:PDF转WordPDF转PPTPDF转ExcelPDF转图片PDF转文字Word转PDFPPT转PDFExcel转PDF图片转PDF网页转PDFPDF加水印PDF去水印PDF加密PDF压缩......
  • 基于FPGA的数据采集、编码、通讯和存储系统设计(即FPGA+RTL8211千兆以太网+SD卡存储+RT
    介绍一个小项目,加强对FPGA相关接口的整体把握。硬件及软件代码梳理:硬件系统的主要功能框图,其中FPGA作为处理单元,实现了包括电流和电压的采集、千兆以太网通讯、SD卡本地数据存储和串口通讯等。已经过板级测试,测试包含:千兆网通讯收发测试、AD采集的数据验证、SD卡存储验证......
  • uniapp 微信小程序自定义tabbar
    为什么要自定义?自定义tabbar可做事件拦截,可自定义样式等。第一步:隐藏原生tabbar第二步:page.json中定义路径 第三步:创建自定义组件目录 代码<template> <viewclass='tabbar'> <view class='tab' v-for="(item,index)intabbarList" :key='index......
  • 上传应用程序到苹果应用商店的工具和要求
     引言在今天的移动应用市场中,将应用程序上传到苹果应用商店(AppStore)是许多开发者的首要任务之一。然而,不同操作系统下的开发者可能需要使用不同的工具和遵循不同的要求来完成这一任务。本文将介绍在macOS、Windows和Linux等操作系统上上传应用程序到AppStore所需的工具......
  • uniapp 小程序接口调用封装
    目的:接口封装让代码更简洁,操作更方便,出错率更低。第一步:建立引用目录 第二步:封装request.jsconstBASE_URL="http://"//公共请求头地址constrequest=(url,method,data)=>{ returnnewPromise((resolve,reject)=>{ uni.request({ url:BASE_URL+url,......
  • 汇编语言程序设计实验五 条件转移指令
    实验目的和要求(1)     编写实验任务要求的两个程序。(2)     写出调试以上程序,即修改程序参数,检查结果的操作方法。(3)     熟悉源程序汇编、连接命令的使用方法即要回答的内容。实验环境DOSBOX实验内容与过程验证以下程序16进制数化ASCII码的一般......
  • Acwing 681. 疏散人群(dfs)(记录根节点下有几个子节点)
    输入样例:62132435261输出样例:4#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLN=100200,M=2020;constLLmod=998244353;vector<LL>g[N];LLsum[N];LLdfs(LLidx,LLfa){LL......