题目:请问下面的程序一共输出多少个“-”?

#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”?多少个-?相关推荐

  1. 腾讯面试题--程序一共输出多少个“-”

    题目详情: 请判断下列程序一共输出多少个"-": int main(void) { int i; for(i=0; i<2; i++){ fork(); printf(&qu ...

  2. 在Linux程序中输出函数调用栈

    程序发生异常时,将函数的调用栈打印出来,可以大大提高定位效率. Linux中提供了三个函数用来获取调用栈: /* 获取函数调用栈 */ int backtrace(void **buffer, int ...

  3. Windows SDK程序的输出文字和格式控制(wsprintf、swprintf、Textout)

    程序的输出如上图: 输出相关的代码如下: TCHAR szBuffer [40] ; TCHAR szHello[] = TEXT("Hello, C-Free!"); int i ...

  4. python执行结果在gui界面显示_Python PyQt5运行程序把输出信息展示到GUI图形界面上...

    概述:最近在赶毕业设计,遇到一个问题,爬虫模块我用PyQt5写了图形界面,为了将所有的输出信息都显示到图形界面上遇到了问题. 先演示一下效果最终效果吧,下面两张图用来镇楼.可以看到我们图形界面和程序运 ...

  5. c语言if else语句_查找C程序的输出(如果为else语句)| 设置1

    c语言if else语句 Find the output of the following programs, 查找以下程序的输出, Program 1) 程序1) #include <stdi ...

  6. 例7.8 分析下列程序的输出结果。《计算机等级考试二级C++语言》

    /* 计算机等级考试二级C++语言 例7.8 分析下列程序的输出结果. */ ​ #include <bits/stdc++.h> using namespace std; class B ...

  7. 定义一个泛型为String类型的List集合,统计该集合中每个字符 (注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素, 程序最终输出结果为:

    代码 import java.util.*;/*6.定义一个泛型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数.例如:集合中有"abc".&q ...

  8. mac使用codelite运行程序没有输出

    这几天用mac做了些开发,装了一个CodeLite做C++开发,结果运行程序后,虽然启动了两个终端窗口,但是并没有程序的输出 IDE中报错xcrun: error: invalid active de ...

  9. runtime java_Java runtime.getruntime()从执行命令行程序获得输出

    Java runtime.getruntime()从执行命令行程序获得输出 我正在使用运行时从我的Java程序运行命令提示符命令.但是,我不知道如何获得命令返回的输出. 这是我的代码:Runtime  ...

最新文章

  1. linux sort 源码_Linux: 史上最全的sort命令案例,打包带走吧
  2. SSAS分区数据量过大处理参考 转- Recommended Practices with Partitions and Aggregations
  3. 超图桌面版下载、安装、使用入门
  4. MySQL 全文索引实现简单版搜索引擎
  5. 用python绘制好看的图形_如何使用Python绘制好word cloud,怎么,画出,好看,的,词,云图...
  6. 学python多大年龄可以学车_多大年龄可以学驾照?
  7. 数学公式、可视化图齐齐上阵,神经网络如何一步步走向最优化「看得见」!...
  8. vue中引入外部文件js、css、img的方法
  9. VMware10 安装centos6.7 设置NAT模式固定ip
  10. Flex Gumbo中如何自定义HSlider数据Tip样式的例子
  11. 本地计算机上的mysql57_win10出现本地计算机上的MySQL57服务启动后停止
  12. Java疯狂讲义第五章笔记
  13. BLE低功耗蓝牙协议栈
  14. 设置计算机网络文件共享,局域网共享文件设置方法图文教程
  15. 【MacBook】激活有个步骤要输面的问题:Enter the passcode you use to unlock the MacBook ***.
  16. html双引号打不正确,双引号要占一个空格吗 为什么打双引号要空格一下才能出来...
  17. PostgreSQL 中的单引号与双引号
  18. matlab-高数 diff 方向导数
  19. 《娱乐至死》读书笔记(part1)--深入一种文化的最有效途径是了解这种文化中用于会话的工具
  20. python 判断当前日期是否为股票交易日

热门文章

  1. input点击链接另一个页面,各种操作。
  2. centos7安装openjdk8
  3. Bzoj3998 弦论
  4. Linux中文档去掉windows文本的多余的回车符(^M)
  5. node模块函数图解
  6. Android 菜单(OptionMenu)大全 建立你自己的菜单
  7. powerdesigner 导出数据库表结构
  8. 我们的生命,不因别人的喜欢而存在
  9. oracle转mysql总结经验,oracle转mysql总结(转)
  10. 小米手机升级Android6,小米3能升级miui 6?小米3升级miui v6教程