select & pselect
#include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
void FD_CLR(int fd, fd_set *set);
int FD_ISSET(int fd, fd_set *set);
void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
监控fd状态(timeout 是到期前剩余时间)
int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t *sigmask);
除了监测fd状态,pselect精度更准,且监测signal(另外pselect的timeout参数是const的)
monitor multiple file descriptors, waiting until one or more of the file descriptors become “ready” for some class of I/O operation