UNIX API提供最基本的IO函數(shù),聲明在fcntl.h unistd.h中。(fcntrl<=>fd control)
應(yīng)用程序使用file descriper(文件描述符)和內(nèi)核交互。
這些函數(shù)與標(biāo)準(zhǔn)庫中的IO對比,稱為unbuffered I/O.
UNIX中一切都是文件,磁盤上文件,socket都可以用FD來標(biāo)識(shí),也都可以使用這些函數(shù)操作I/O.
UNIX 常用IO模型(部分):
1.blocking IO
2. Non-blocking IO
3. IO 復(fù)用
在打開文件時(shí),默認(rèn)I/O方式是blocking.
函數(shù)原型:
ssize_t read(int,void*,size_t); //-1 error , 0 EOF
ssize_t write(int,void*,size_t);
read和write一般都放到一個(gè)循環(huán)里,出錯(cuò)或者EOF才break
在socket IO時(shí)候,如果是blocking mode,在讀操作的時(shí)候,如果內(nèi)核沒有準(zhǔn)備好數(shù)據(jù),那么read函數(shù)就會(huì)阻塞,自然需要一個(gè)thread來處理。
IO復(fù)用技術(shù)可以使服務(wù)器不用為每一個(gè)客戶端都分配2個(gè)thread.
< to be continue...>