关闭

腾讯笔试题--到底输出几个 -

906人阅读 评论(11) 收藏 举报
分类:

请问下面的程序一共输出多少个“-”?为什么?



结果:


输出为: 6

PS:

有缓冲区\n 和 刷新缓冲区结果一样 


结果:



解析:

1.程序一开使,bash产生一个进程P1执行此程序,

2.P1进入程序后,当i=0时,fork()产生一个子进程P2,同时它自己输出一个'-'.

3.P2继承P1的诸如环境变量,PC等环境,P2首现会输出一个'-'.同时此时i=1,会继续执行for循环---P2先fork()出一个子进程P3,同时再输出一个'-'.

4.P3进程为P2的子进程,它会复制其父进程P2的指令,变量值,程序调用栈,环境变量,缓冲区等,它会输出一个'-'


这个呢?


结果:


PS:

输出为8   这是为什么呢?

这是因为printf(“-”);语句有buffer,所以,对于上述程序,printf(“-”);把“-”放到了缓存中,在fork的时候,缓存被复制到了子进程空间,所以,就多了两个,就成了8个,而不是6个。

5
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41708次
    • 积分:1528
    • 等级:
    • 排名:千里之外
    • 原创:99篇
    • 转载:6篇
    • 译文:0篇
    • 评论:64条
    文章分类
    最新评论