C标准I|O与Unbufferd I|o

来源:互联网 发布:亚马逊关键词优化 编辑:程序博客网 时间:2024/05/18 22:16

用Unbuffered I|o函数每次读写都要进内核,调一个系统调用比调一个用户空间的函数要慢的很多,所以在用户空间开辟I|O缓冲区还是比较必要的,用C标准I|O库函数就比较方便,省去了自己管理I|O缓冲区的麻烦。

 

用C标准I|o库函数要时刻注意|O缓冲区与实际文件可能不一致,在必要时需要调用fflush(2);

 

 

在UNIX中,I|0函数不仅用来读写常规文件,也用于读写设备,比如写终端,或网络设备,在读写设备时通常不希望有缓冲的,例如向代表网络设备的文件写数据就是希望数据通过网络设备发送出去,而不希望只写到缓冲区里就算完事,当网络设备接收到数据时应用程序也希望第一时间被通知到,所以网络编程通常直接调用Unbuffered I|O函数

c标准库函数是c标准的一部分,而Unbuffered I|O函数是UNIX标准的一部分,在所有支持C语言的平台上应该都可以用C标准库函数,并且头文件在<stdio.h>中声明

而read、write等函数在头文件unist.h中声明,在支持c语言的非UNIX操作系统上,标准I|O库的底层可能由另外一组系统函数支持,例如在windows下的底层为WIN32 API.其中读写文件的系统调用函数为ReadFile、WriteFile

 

 

 

0 0