1. 文件IO,不帶緩沖的IO
函數(shù):read, write, open, close, pread, pwrite
這類函數(shù)直接調(diào)用系統(tǒng)調(diào)用蒸其,可以通過(guò)調(diào)整參數(shù)中的bufsize來(lái)加速文件讀寫蔬咬,但是bufsize小于32字節(jié)時(shí)翼抠,因?yàn)镺S的預(yù)讀技術(shù)導(dǎo)致沒(méi)有時(shí)間不會(huì)再增長(zhǎng)苹丸;當(dāng)bufsize>磁盤塊長(zhǎng)度時(shí)邀窃,時(shí)間不會(huì)再降低
2. 標(biāo)準(zhǔn)IO家坎,帶緩沖的IO
函數(shù):fopen, fclose, getc, fgetc, gets, fgets, puts, fputs, printf...
這類函數(shù)會(huì)自動(dòng)進(jìn)行緩沖區(qū)分配牍陌,選擇正確的塊長(zhǎng)度疮茄,有全緩沖滥朱,行緩沖,不緩沖三種方式娃豹。一般文件IO都是全緩沖焚虱,外部設(shè)備或者stdin,stdout都是行緩沖懂版,stderr是不緩沖的
3. 非阻塞IO
在open函數(shù)中設(shè)置O_NONBLOCK或者在fcntl函數(shù)中設(shè)置
int fd = open("a.txt", O_RDWR | O_NONBLOCK);
或者
int val = fcntl(fd, F_GETFL, 0);
fcntl(fd,F_SETFL, val | O_NON_BLOCK);