为什么输入输出要刷新缓冲区
2010-08-01 20:12
274 查看
他回答的正是你所问的事情。只不过你举的例子太短,不足以触发这个问题。
一个更鲜明的例子是我以前写linux下的c程序时候遇到的
程序在某个地方调用fork()分裂成多个进程,这时候多个进程分别打印一个不同的语句,如果不做流缓冲区刷新的话,那么输出的顺序很可能与预期不同
如果还是觉得抽象的话,举实例来说,比如设定缓冲长度是50字符。也就是说,每次cout输送50字符就强制输出一次。如果最后一次是个hello world,那么缓冲没有填满,就不会立即打印,而等待下一次缓冲满一并输出。如果在此之前程序结束了,那么这行输出很可能就被吞掉了。如果输出hello world之后发送一个endl到stdout,那么此时这句hello world就被强行冲出缓冲区直接进行打印,也就没有输出被吞没的问题了
一个更鲜明的例子是我以前写linux下的c程序时候遇到的
程序在某个地方调用fork()分裂成多个进程,这时候多个进程分别打印一个不同的语句,如果不做流缓冲区刷新的话,那么输出的顺序很可能与预期不同
如果还是觉得抽象的话,举实例来说,比如设定缓冲长度是50字符。也就是说,每次cout输送50字符就强制输出一次。如果最后一次是个hello world,那么缓冲没有填满,就不会立即打印,而等待下一次缓冲满一并输出。如果在此之前程序结束了,那么这行输出很可能就被吞掉了。如果输出hello world之后发送一个endl到stdout,那么此时这句hello world就被强行冲出缓冲区直接进行打印,也就没有输出被吞没的问题了
相关文章推荐
- C++重载输入和输出操作符以及IO标准库中的刷新输入缓冲区残留字符问题
- C++重载输入和输出操作符以及IO标准库中的刷新输入缓冲区残留字符问题
- C++重载输入和输出操作符以及IO标准库中的刷新输入缓冲区残留字符问题
- c++中为什么刷新缓冲区
- 输入和输出缓冲区更新(试过成功)
- 输入与输出缓冲区的概念
- 输入输出文件的缓冲区
- 为什么我做的降序排列程序输入321却输出312?
- 七、输入输出系统:用锁实现输出、编写键盘驱动程序、环形输入缓冲区
- 缓冲区和数组的输入输出问题
- 各位大神,求解求解!!小女初接触编程,有多多不解,该程序显示无错误,为什么无论输入a>b还是b>a输出结果均为A>B??
- C++输出缓冲区刷新
- JAVA基础 day21 字节流的输入和输出 字节流的缓冲区 (自己实现BufferedInputStream) 键盘输入 转换流的用法 改变标准输入输出设备 IO流操作的基本规律
- c++输出缓冲区刷新
- 为什么java输出字符串数组名直接输入字符数组?
- c++输出缓冲区刷新
- c++输出缓冲区刷新
- 输入 /输出 缓冲区 与 数组的常识
- maxscript,MAXScript Listener下输入print "hi"为什么输出两次
- C++ 几种刷新输出缓冲区方式