回复 3楼 xhlruguo
一般来说没有标准的办法能做这件事。
C语言标准规定的那些终端的输入输出函数都是有缓冲的。正常情况下是行缓冲的,就是在你输入回车之前,你的程序被抑制(就你的程序在这段时间里歇着呢,什么也没干),直到输入回车之后才被换醒来处理输入。
可能一般没注意到的是:输出其实也是行缓冲的,即直到要输出'\n'之后,内容才被刷新到屏幕上。不过这个有几个例外,包括控制流的状态从输出转为输入时,输出流要刷新。程序正常退出时,所有的文件流要刷新等等,还有其它一些情况。所以一般观察不出来。
C标准里倒是规定了一些函数(如 setbuf),可以改变缓冲行为的。但好像只对普通文件有效。而且不太清楚某些特性是不是依赖实现了。
POSIX标准定义了一些函数,可以以非阻塞的方式打开文件。就可以完成你说的那些事。我就不赘述了,你要有兴趣可以上网查相关的东西。要好好利用网络资源~~