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...>