日期:2014-05-16  浏览次数:20609 次

新手提问,不带缓存的I/O函数
LINUX下有不带缓存的I/O函数(比如open,write等)和标准I/O函数(比如fopen,fwrite等)。
我不太明白带缓存是什么意思?
带缓存和不带缓存有什么区别?
两个简单问题,谢谢了。

------解决方案--------------------
http://blog.csdn.net/power77/archive/2005/01/26/269248.aspx

http://blog.csai.cn/user1/27828/archives/2007/14285.html
------解决方案--------------------
一般来说,标准IO库的实现(也就是带缓存的)会为你选一个合适的缓冲,所以效率经常会高一些。
但标准IO库内部要管理缓存,就必然存在一些合局或静态的结构,这样在信号处理程序里就会出问题,也就是说是信号不安全的。
 
探讨
那是用标准I/O库好呢还是不带缓存的I/O库好呢?
大家在LINUX下编程用的是什么I/O?

------解决方案--------------------
带缓存的存储效率要高一些,但数据的完整性就得不到很好的保证。
不带缓存的存储效率相对来说低一些,但它的实时性相对较好,能更好的确保数据的完整性。
要用什么类型的就看你自己的需求了。