标签:
I/O复用使得程序能够同时监听多个文件描述符,适用于以下情况:
9.1 select系统调用
1 #include <sys/socket.h> 2 int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout);
nfds参数指定被监听的文件描述符总数,痛陈设置为selcet监听的所有文件描述符的最大值加1
readfds writefds exceptfds分别指向可读,可写和异常等事件对应的文件描述符集合,调用select后,通过这三个参数传入自己感兴趣的文件描述符,select返回,内核将修改它们来通知应用程序哪些文件描述符就绪
fd_set通过一些列宏来访问
1 #include <sys/socket.h> 2 FD_ZERO(fd_set *fdset); //清除fdset所有位 3 FD_SET(int fd, fd_set *fdset); //设置fdset的位fd * 4 FD_CLR(int fd, fd_set *fdset); //清除fdset的位fd * 5 int FD_ISSET(int fd, fd_set *fdset); //测试fdset的位fd是否被设置
timeout用来设置select函数的超时时间
1 struct timeval { 2 long tv_sec; 3 long tv_usec; 4 };
标签:
原文地址:http://www.cnblogs.com/raichen/p/5034952.html