Linux IO总结

1. 文件IO,不带缓冲的IO

函数:read, write, open, close, pread, pwrite
这类函数直接调用系统调用,可以通过调整参数中的bufsize来加速文件读写,但是bufsize小于32字节时,因为OS的预读技术导致没有时间不会再增长;当bufsize>磁盘块长度时,时间不会再降低

2. 标准IO,带缓冲的IO

函数:fopen, fclose, getc, fgetc, gets, fgets, puts, fputs, printf...
这类函数会自动进行缓冲区分配,选择正确的块长度,有全缓冲,行缓冲,不缓冲三种方式。一般文件IO都是全缓冲,外部设备或者stdin,stdout都是行缓冲,stderr是不缓冲的

3. 非阻塞IO

在open函数中设置O_NONBLOCK或者在fcntl函数中设置

int fd = open("a.txt", O_RDWR | O_NONBLOCK);

或者

int val = fcntl(fd, F_GETFL, 0);
fcntl(fd,F_SETFL, val | O_NON_BLOCK);

4. IO多路转接

5. 存储映射IO

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 底层文件访问 open系统调用 在遵循POSIX规范的系统上,使用open系统调用并不需要包含头文件sys/typ...
    Select_Ep阅读 1,507评论 1 3
  • C/C++输入输出流总结 前两天写C++实习作业,突然发现I/O是那么的陌生,打了好长时间的文件都没有打开,今天终...
    LuckTime阅读 1,757评论 0 6
  • 摘抄-在出生后第一年的后半段中,宝宝会开始害怕与妈妈分离,这同样是一个正常的成长现象。 感悟-最近每天早上我上班准...
    喜欢紫色的女子阅读 219评论 0 0
  • 【同读一本书】2016-11.21-127 —《沟通的艺术》 很多人以为听与倾听是一回事,其实两者大不相同。听是...
    徐猛_Merlin阅读 342评论 2 0
  • We're from different worlds, yet we somhow fit together. ...
    Luna拿拿阅读 187评论 0 0