I/O模型 |
阻塞式I/O |
非阻塞式I/O |
I/O复用 |
信号驱动I/O |
异步I/O |
一个输入操作通常包括两不同阶段: |
1.等待数据准备好 |
2.从内核向进程复制数据 |
前4种I/O模型属于同步I/O模型,最后一种属于异步I/O模型。 |
select函数 |
struct timeval 有三种值: 1. 永远等待下去:仅在有一个描述符准备好I/O时返回。设置为空指针。 2. 等待一段固定时间。 3. 等本不等待:检查描述符后立即返回,这称为论询。 |
目前支持的异常条件只有两个 1.某个套接字的带外数据到达。 2.某个已置的分组模式的伪终端存在可从其主端读取的控制状态信息。 |
描述符集:fd_set void FD_ZERO(fd_set *fdset); void FD_SET(int fd, fd_set *fdset); void FD_CLR(int fd, fd_set *fdset); void FD_ISSET(int fd, fd_set *fdset); |
描述符就绪条件 |
满足下面四个条件之一,一个套接字准备好读。 1. 该套接 |