fflush a stream

清洗一个流

clip_image002

      前面说过,对于用户缓冲虽然有很大的好处,但是也有一定的风险,就是断电后可能会有数据尚未写入磁盘,导致数据丢失。

      标准IO提供了一个用来将用户缓冲区写入内核,并且保证所有的数据都通过write写出的函数,fflush函数提供了这一功能。

      调用fflush以后,立即调用fsync,就可以先保证用户缓冲区被写入内核,然后保证内核缓冲区被写入到磁盘。

     其实,对于有些输入,由于缓冲的影响,可能会导致stdout暂时看不到,此时就可以通过fflush(stdout)来立即查看。fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃,fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上,比如printf(“。。。。。。。。。。。“);后面加fflush(stdout);可提高打印效率