Linux IO总结

2015-10-16  本文已影响0人  清明小雨

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

上一篇下一篇

猜你喜欢

热点阅读