select系统调用 -- 文件描述符就绪条件
来源:互联网 发布:劲舞团网络连接中断 编辑:程序博客网 时间:2024/05/16 02:03
select系统调用原型如下:
#include <sys/select.h>int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout);
参数readfds, writefds, exceptfds
参数分别指向可读、可写和异常事件对应的文件描述符集合。
哪些情况下文件描述符可以被认为是可读、可写或者出现异常,对于select的使用非常关键。
在网络编程中,下列情况下socket可读:
1、socket内核接收缓存区中的字节数大于或等于其低水位标记SO_RCVLOWAT。此时可以无阻塞地读该socket,并且读操作返回的字节数大于0。
2、socket通信对方关闭连接。此时对该socket读操作将返回0。
3、监听socket上有新的连接请求。
4、socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除该错误。
下列情况下socket可写:
1、socket内核发送缓冲区中的可用字节数大于或等于其低水位标记SO_SNDLOWAT。此时我们可以无阻塞写该socket,并且写操作返回的字节数大于0。
2、socket写操作被关闭。对写操作被关闭的socket执行写操作将触发一个SIGPIPE信号。
3、socket使用非阻塞connect连接成功或者失败(超时)之后。
4、socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除该错误。
网络程序中,select能处理的异常情况只有一种:socket上接收到带外数据。
《Linux高性能服务器编程》
0 0
- select系统调用 -- 文件描述符就绪条件
- select 描述符就绪条件
- Select()系统以及文件描述符
- Select函数文件描述符集的准备条件
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Select()系统调用及文件描述符集fd_set的应用
- Linux操作系统安装与常用指令介绍
- 设计模式(23种简介)
- php小问题
- Python序列之列表和元组
- Oracle权限管理介绍
- select系统调用 -- 文件描述符就绪条件
- CocoaPods 使用方法介绍
- Sql学习第四天——SQL关于with cube,with rollup和grouping
- 分层嵌套的登录
- 浅谈:Java静态变量以及静态方法。
- 安装mysql workbench
- java web error:Choose unique values for the 'webAppRootKey' context-param in your web.xml files
- SpringMVC实例
- Spring MVC 学习