在linux下c语言编程有关进程的问题

看这个两个程序的截图,仅在printf中改变一个"\n"为什么会使5050这个结果有时候在file2之前,有时在file2之后?(file1和file2的内容都是自己的文件名+回车)

不太了解c的多进程(多线程?)编程,没看懂这个程序,我猜原因可能有:

    进程(线程)是无序进行的

    printf有输出缓存(就是使用printf输出,不一定会立即输出)


相关资料:

printf输出函数,每执行一个printf输出函数,输出的数不是“肯定立刻”打印到屏幕上的,只有遇到一下几种情况时,printf输出的数据(执行了printf,但还没有打印到屏幕的数据)才会全部打印到屏幕上:

1、有输入请求的时候,会立马输出到屏幕
2、输出有换行符的时候,也会马上输出到屏幕上
3、程序结束的时候也会马上输出到屏幕上
4、输出缓冲区满的时候

追问

根据你说的我去查了一下资料,确实是这样的,标准输出在Linux下,对交互设备输出采用行缓存,对管道文件设备使用块缓存,不遇到换行符确实不会立刻输出

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网