您的位置:首页 > 其它

为什么输入输出要刷新缓冲区

2010-08-01 20:12 274 查看
他回答的正是你所问的事情。只不过你举的例子太短,不足以触发这个问题。
一个更鲜明的例子是我以前写linux下的c程序时候遇到的
程序在某个地方调用fork()分裂成多个进程,这时候多个进程分别打印一个不同的语句,如果不做流缓冲区刷新的话,那么输出的顺序很可能与预期不同
如果还是觉得抽象的话,举实例来说,比如设定缓冲长度是50字符。也就是说,每次cout输送50字符就强制输出一次。如果最后一次是个hello world,那么缓冲没有填满,就不会立即打印,而等待下一次缓冲满一并输出。如果在此之前程序结束了,那么这行输出很可能就被吞掉了。如果输出hello world之后发送一个endl到stdout,那么此时这句hello world就被强行冲出缓冲区直接进行打印,也就没有输出被吞没的问题了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: