2022年Linux网络编程-select函数的应用 .pdf
《2022年Linux网络编程-select函数的应用 .pdf》由会员分享,可在线阅读,更多相关《2022年Linux网络编程-select函数的应用 .pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux网络编程-select 函数的应用1.select 系统调用select 系统调用是用来让我们的程序监视多个文件描述符的状态变化的。程序会停在select 这里等待,直到被监视的文件描述符有某一个或多个发生了状态改变。select()的机制中提供一fd_set 的数据结构,实际上是一long 类型的数组,每一个数组元素都能与一打开的文件句柄建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO 状态修改fd_set 的内容,由此来通知执行了select()的进程哪些socket或文件可读可写。select函数原型:#include#include#includ
2、e#includeint select(int nfds,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,conststruct timeval*timeout);ndfs:select 监视的文件句柄数,视进程中打开的文件数而定,一般设为要监视各文件中的最大文件描述符值加1。readfds:这个文件描述符集合监视文件集中的任何文件是否有数据可读,当select 函数返回的时候,readfds 将清除其中不可读的文件描述符,只留下可读的文件描述符。writefds:这个文件描述符集合监视文件集中的任何文件是否有数据可写,当select 函数返回的
3、时候,writefds 将清除其中不可写的文件描述符,只留下可写的文件描述符。exceptfds:这个文件集将监视文件集中的任何文件是否发生错误,其实,它可用于其他的用途,例如,监视带外数据 OOB,带外数据使用 MSG_OOB 标志发送到套接字上。当select 函数返回的时候,exceptfds 将清除其中的其他文件描述符,只留下标记有OOB 数据的文件描述符。timeout:本次 select()的超时结束时间。这个参数至关重要,它可以使select处于三种状态:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 3 页 -(1)若将 NULL 以形参传入,即不传入时间结构,就
4、是将 select 置于阻塞状态,一定等到监视文件描述符集合中某个文件描述符发生变化为止;(2)若将时间值设为0 秒 0 毫秒,就变成一个 纯粹的非阻塞函数,不管文件描述符是否有变化,都立刻返回继续执行,文件无变化返回0,有变化返回一个正值;(3)timeout 的值大于 0,这就是等待的超时时间,即select 在 timeout 时间内阻塞,超时时间之内有事件到来就返回了,否则在超时后不管怎样一定返回,返回值同上述。函数的返回值:正值:表示监视的文件集中有文件描述符符合要求零值:表示 select 监视超时负值:表示发生了错误,错误值由errno 指定。宏操作:FD_ZERO(fd_set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Linux网络编程-select函数的应用 2022 Linux 网络 编程 select 函数 应用
限制150内