在linux下c语言编程有关进程的问题
看这个两个程序的截图,仅在printf中改变一个"\n"为什么会使5050这个结果有时候在file2之前,有时在file2之后?(file1和file2的内容都是自己的文...
看这个两个程序的截图,仅在printf中改变一个"\n"为什么会使5050这个结果有时候在file2之前,有时在file2之后?(file1和file2的内容都是自己的文件名+回车)
展开
展开全部
不太了解c的多进程(多线程?)编程,没看懂这个程序,我猜原因可能有:
进程(线程)是无序进行的
printf有输出缓存(就是使用printf输出,不一定会立即输出)
相关资料:
printf输出函数,每执行一个printf输出函数,输出的数不是“肯定立刻”打印到屏幕上的,只有遇到一下几种情况时,printf输出的数据(执行了printf,但还没有打印到屏幕的数据)才会全部打印到屏幕上:
1、有输入请求的时候,会立马输出到屏幕
2、输出有换行符的时候,也会马上输出到屏幕上
3、程序结束的时候也会马上输出到屏幕上
4、输出缓冲区满的时候
追问
根据你说的我去查了一下资料,确实是这样的,标准输出在Linux下,对交互设备输出采用行缓存,对管道文件设备使用块缓存,不遇到换行符确实不会立刻输出
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询