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