mirror of
https://github.com/riba2534/TCP-IP-NetworkNote.git
synced 2026-02-03 01:53:19 +08:00
修改 ch12 错别字
This commit is contained in:
@@ -83,7 +83,7 @@ select 函数的使用方法与一般函数的区别并不大,更准确的说
|
||||
|
||||
- `FD_ZERO(fd_set *fdset)`:将 fd_set 变量所指的位全部初始化成0
|
||||
- `FD_SET(int fd,fd_set *fdset)`:在参数 fdset 指向的变量中注册文件描述符 fd 的信息
|
||||
- `FD_SLR(int fd,fd_set *fdset)`:从参数 fdset 指向的变量中清除文件描述符 fd 的信息
|
||||
- `FD_CLR(int fd,fd_set *fdset)`:从参数 fdset 指向的变量中清除文件描述符 fd 的信息
|
||||
- `FD_ISSET(int fd,fd_set *fdset)`:若参数 fdset 指向的变量中包含文件描述符 fd 的信息,则返回「真」
|
||||
|
||||
上述函数中,FD_ISSET 用于验证 select 函数的调用结果,通过下图解释这些函数的功能:
|
||||
@@ -128,7 +128,7 @@ struct timeval
|
||||
};
|
||||
```
|
||||
|
||||
本来 select 函数只有在监视文件描述符发生变化时才返回。如果未发生变化,就会进入阻塞状态。指定超时时间就是为了防止这种情况的发生。通过上述结构体变量,将秒数填入 tv_sec 的成员,将微妙数填入 tv_usec 的成员,然后将结构体的地址值传递到 select 函数的最后一个参数。此时,即使文件描述符未发生变化,只要过了指定时间,也可以从函数中返回。不过这种情况下, select 函数返回 0 。因此,可以通过返回值了解原因。如果不向设置超时,则传递 NULL 参数。
|
||||
本来 select 函数只有在监视文件描述符发生变化时才返回。如果未发生变化,就会进入阻塞状态。指定超时时间就是为了防止这种情况的发生。通过上述结构体变量,将秒数填入 tv_sec 的成员,将微妙数填入 tv_usec 的成员,然后将结构体的地址值传递到 select 函数的最后一个参数。此时,即使文件描述符未发生变化,只要过了指定时间,也可以从函数中返回。不过这种情况下, select 函数返回 0 。因此,可以通过返回值了解原因。如果不想设置超时,则传递 NULL 参数。
|
||||
|
||||
#### 12.2.4 调用 select 函数查看结果
|
||||
|
||||
@@ -136,7 +136,7 @@ select 返回正整数时,怎样获知哪些文件描述符发生了变化?
|
||||
|
||||

|
||||
|
||||
由图可知,select 函数调用完成候,向其传递的 fd_set 变量将发生变化。原来为 1 的所有位将变成 0,但是发生了变化的文件描述符除外。因此,可以认为值仍为 1 的位置上的文件描述符发生了变化。
|
||||
由图可知,select 函数调用完成后,向其传递的 fd_set 变量将发生变化。原来为 1 的所有位将变成 0,但是发生了变化的文件描述符除外。因此,可以认为值仍为 1 的位置上的文件描述符发生了变化。
|
||||
|
||||
#### 12.2.5 select 函数调用示例
|
||||
|
||||
|
||||
Reference in New Issue
Block a user