永发信息网

关于linux下fork()函数的问题

答案:1  悬赏:0  手机版
解决时间 2021-11-25 19:06
  • 提问者网友:不爱我么
  • 2021-11-25 15:35
关于linux下fork()函数的问题
最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-11-25 15:56
这个和printf 的打印规则有关。
当调用printf时, 打印内容并不一定会实时输出到终端,而是先存到缓冲中,在如下情况之一输出到终端:
1 遇到换行。
2 缓冲区满。
3 遇到flush一类的缓冲刷新函数。
4 退出程序。
这里是第一种和第四种。
对于第一个程序,没换行,所以还在缓冲中, fork的时候 把缓冲中的a也复制了, 这样等程序退出时, 显示了两个。
第二个程序,是遇到\n, 直接输出,缓冲为空。fork的时候, 不会复制这部分。于是只有一个a。追问非常感谢您的指点。我还有个小问题。你看我这样理解是否正确:fork()如果把缓冲区中的a也复制了的话,那么就说明每个进程中都有缓冲区的内容。那是在进程的哪个段中呢?追答我的理解是依赖于操作系统的。
有些是放在进程自身的栈区, 有的是对应的硬件缓冲区。也有的是操作系统预留的一段空间。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯