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

看这个两个程序的截图,仅在printf中改变一个"\n"为什么会使5050这个结果有时候在file2之前,有时在file2之后?(file1和file2的内容都是自己的文... 看这个两个程序的截图,仅在printf中改变一个"\n"为什么会使5050这个结果有时候在file2之前,有时在file2之后?(file1和file2的内容都是自己的文件名+回车) 展开
 我来答
小菜呀小菜
2016-12-21 · TA获得超过256个赞
知道小有建树答主
回答量:267
采纳率:50%
帮助的人:151万
展开全部

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

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

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


相关资料:

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

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

追问
根据你说的我去查了一下资料,确实是这样的,标准输出在Linux下,对交互设备输出采用行缓存,对管道文件设备使用块缓存,不遇到换行符确实不会立刻输出
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式