select()用法
select()系统调用提供了一种实现同步I/O多路复用的机制:
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
FD_CLR(int fd, fd_set *set);
FD_ISSET(int fd,fd_set *set);
FD_SET(int fd,fd_set *set);
FD_ZERO(fd_set *set);
- 每次使用select()之前先调用 FD_ZERO(fd_set *set),该函数是从指定集合中移除所有文件描述符;
- 紧接着调用 FD_SET(int fd,fd_set *set),向指定集合中添加一个文件描述符;
- 设置timeout;
- 调用select();
- select()调用返回后使用FD_ISSET来检查一个文件描述符是否就绪,在,返回一个非零值,否则用0表示不在;