fork()请问下面的程序一共输出多少个“A”?多少个-?
题目:请问下面的程序一共输出多少个“-”?
#include
#include
#include
int main(void)
{
int i;
for(i=0; i<2; i++){
fork();
printf("-");
}
return 0;
}
解析:一共输出8个。
首先程序一开始,bash产生一个进程P1执行此程序,P1进入程序。
当i=0时:
fork()产生一个子进程P2,同时它自己输出一个’-’。P2继承P1的诸如环境变量,P2首现会输出一个’-’。
当i=1,会继续执行for循环—P2先fork()出一个子进程P3,同时再输出一个’-’。
P3进程为P2的子进程,它会复制其父进程P2的指令,变量值,程序调用栈,环境变量,缓冲区等,它会输出一个’-’。
此时P1进入程序后,当i=1时,fork()产生另一个它的子进程P4,同时输出一个’-’。P4同样会输出一个’-’。
我们正常分析觉得应该产生6个’-’。
这是因为printf(“-”);语句有buffer,所以,对于上述程序,printf(“-”);把“-”放到了缓存中,在fork的时候,缓存被复制到了子进程空间,所以,就多了两个,就成了8个,而不是6个。
因为这里P3会继承P2的缓冲区,其中有一个’-’,所以P3会输出两个’-’。
因为P4为P1的一个子进程它会继承P1的缓冲区,其中有一个’-’,所以P4会输出两个’-’。
若将程序改为:
#include
#include
#include int main(void)
{int i;for (i = 0; i<2; i++){fork();printf("-\n");}return 0;
}
则输出六个。
fork()请问下面的程序一共输出多少个“A”?多少个-?相关推荐
- 腾讯面试题--程序一共输出多少个“-”
题目详情: 请判断下列程序一共输出多少个"-": int main(void) { int i; for(i=0; i<2; i++){ fork(); printf(&qu ...
- 在Linux程序中输出函数调用栈
程序发生异常时,将函数的调用栈打印出来,可以大大提高定位效率. Linux中提供了三个函数用来获取调用栈: /* 获取函数调用栈 */ int backtrace(void **buffer, int ...
- Windows SDK程序的输出文字和格式控制(wsprintf、swprintf、Textout)
程序的输出如上图: 输出相关的代码如下: TCHAR szBuffer [40] ; TCHAR szHello[] = TEXT("Hello, C-Free!"); int i ...
- python执行结果在gui界面显示_Python PyQt5运行程序把输出信息展示到GUI图形界面上...
概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题. 先演示一下效果最终效果吧,下面两张图用来镇楼.可以看到我们图形界面和程序运 ...
- c语言if else语句_查找C程序的输出(如果为else语句)| 设置1
c语言if else语句 Find the output of the following programs, 查找以下程序的输出, Program 1) 程序1) #include <stdi ...
- 例7.8 分析下列程序的输出结果。《计算机等级考试二级C++语言》
/* 计算机等级考试二级C++语言 例7.8 分析下列程序的输出结果. */ #include <bits/stdc++.h> using namespace std; class B ...
- 定义一个泛型为String类型的List集合,统计该集合中每个字符 (注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素, 程序最终输出结果为:
代码 import java.util.*;/*6.定义一个泛型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数.例如:集合中有"abc".&q ...
- mac使用codelite运行程序没有输出
这几天用mac做了些开发,装了一个CodeLite做C++开发,结果运行程序后,虽然启动了两个终端窗口,但是并没有程序的输出 IDE中报错xcrun: error: invalid active de ...
- runtime java_Java runtime.getruntime()从执行命令行程序获得输出
Java runtime.getruntime()从执行命令行程序获得输出 我正在使用运行时从我的Java程序运行命令提示符命令.但是,我不知道如何获得命令返回的输出. 这是我的代码:Runtime ...
最新文章
- linux sort 源码_Linux: 史上最全的sort命令案例,打包带走吧
- SSAS分区数据量过大处理参考 转- Recommended Practices with Partitions and Aggregations
- 超图桌面版下载、安装、使用入门
- MySQL 全文索引实现简单版搜索引擎
- 用python绘制好看的图形_如何使用Python绘制好word cloud,怎么,画出,好看,的,词,云图...
- 学python多大年龄可以学车_多大年龄可以学驾照?
- 数学公式、可视化图齐齐上阵,神经网络如何一步步走向最优化「看得见」!...
- vue中引入外部文件js、css、img的方法
- VMware10 安装centos6.7 设置NAT模式固定ip
- Flex Gumbo中如何自定义HSlider数据Tip样式的例子
- 本地计算机上的mysql57_win10出现本地计算机上的MySQL57服务启动后停止
- Java疯狂讲义第五章笔记
- BLE低功耗蓝牙协议栈
- 设置计算机网络文件共享,局域网共享文件设置方法图文教程
- 【MacBook】激活有个步骤要输面的问题:Enter the passcode you use to unlock the MacBook ***.
- html双引号打不正确,双引号要占一个空格吗 为什么打双引号要空格一下才能出来...
- PostgreSQL 中的单引号与双引号
- matlab-高数 diff 方向导数
- 《娱乐至死》读书笔记(part1)--深入一种文化的最有效途径是了解这种文化中用于会话的工具
- python 判断当前日期是否为股票交易日