7 int select(
int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout)
14 for(i = 0; i < nfds; ++i) {
15 if((readfds && FD_ISSET(i, readfds))
16 || (writefds && FD_ISSET(i, writefds))
17 || (exceptfds && FD_ISSET(i, exceptfds)))
21 pollinfo = (
struct pollfd*)calloc(numfds,
sizeof(
struct pollfd));
22 if(pollinfo == NULL) {
27 for(i = 0, j = 0; i < nfds; ++i) {
28 if((readfds && FD_ISSET(i, readfds))
29 || (writefds && FD_ISSET(i, writefds))
30 || (exceptfds && FD_ISSET(i, exceptfds))) {
35 if(readfds && FD_ISSET(i, readfds))
37 if(writefds && FD_ISSET(i, writefds))
45 rc =
poll(pollinfo, numfds, timeout->tv_sec*1000 + timeout->tv_usec/1000);
47 rc =
poll(pollinfo, numfds, -1);
54 for(i = 0, j = 0, rc = 0; i < nfds; ++i) {
57 if((readfds && FD_ISSET(i, readfds))
58 || (writefds && FD_ISSET(i, writefds))
59 || (exceptfds && FD_ISSET(i, exceptfds))) {
61 if(readfds && FD_ISSET(i, readfds)) {
68 if(writefds && FD_ISSET(i, writefds)) {
75 if(exceptfds && FD_ISSET(i, exceptfds)) {
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
int poll(struct pollfd *fds, nfds_t nfsd, int timeout)