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);