#include <sys/select.h>
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
/*
参数:
nfds: 要监视的最大文件描述符+1
readfds: 要监视的读文件描述符集合 不关心可以传NULL
writefds: 要监视的写文件描述符集合 不关心可以传NULL
exceptfds: 要监视的异常文件描述符集合 不关心可以传NULL
timeout: 超时时间 如果设置成NULL 会一直阻塞 直到有文件描述符就绪
返回值:
成功 就绪的文件描述符的个数
超时 0
失败 -1 重置错误码
*/
//struct timeval 可以指定超时时间
//如果结构体的两个成员都为0 表示非阻塞
struct timeval {
long tv_sec; //秒
long tv_usec; //微秒
};
void FD_CLR(int fd, fd_set *set); //将文件描述符在集合中删除
int FD_ISSET(int fd, fd_set *set); //判断文件描述符是否还在集合中
// 返回0 表示不在了 非0 表示在
void FD_SET(int fd, fd_set *set); //向集合中添加一个文件描述符
void FD_ZERO(fd_set *set); //清空集合
#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
/*
参数:
fds:要监视的文件描述符的集合指向自定义的结构体数据
nfds:fds中已经使用的项目的个数
timeout:超时时间单位是毫秒
设置成10000 表示10s
-1 永久阻塞
0 非阻塞
返回值:
0 超时
-1 出错 重置错误码
正数 成功 返回的就绪的文件描述符的个数
*/
struct pollfd {
int fd; /* 文件描述符 设置成-1 内核就不再监视这一位了*/
short events; /* 要监视的事件 */
short revents; /* 返回的事件 */
};
/*
要监视的事件是用位运算或起来的
要监视的事件放在events字段,而实际就绪的事件在revents字段返回
POLLIN 读事件
POLLOUT 写时间
POLLERR 异常事件
*/
#include <sys/epoll.h>
int epoll_create(int size);
/*
功能:
创建epoll/创建epoll实例的描述符
参数:
size:参数已经被忽略了,只需要填写大于0的值即可
返回值:
epoll_create 调用成功时会返回一个非负整数epfd,
表示新创建的 epoll 实例的文件描述符,
如果调用失败则返回 -1,并设置 errno 变量以指示具体错误原因
*/
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
/*
参数:
epfd:epoll的文件描述符
op:控制方式
EPOLL_CTL_ADD:添加
EPOLL_CTL_MOD:修改
EPOLL_CTL_DEL:删除
fd:被操作的文件描述符
event:(事件)结构体指针
返回值:
成功返回0,
失败返回-1 置位错误码
*/
int epoll_wait(int epfd, struct epoll_event *events,int maxevents, int timeout);
/*
参数:
epfd:epoll的文件描述符
events:准备好的事件的结构体地址
maxevents:返回的最大的文件描述符的个数
timeout:超时
>0 :毫秒级别的超时时间
=0 :立即返回
=-1:不关心超时时间
返回值:
成功返回准备好的文件描述符的个数
返回0代表超时时间到了
失败返回-1置位错误码
*/
原文地址:https://blog.csdn.net/qq_41878292/article/details/134751450
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_30806.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。