/* gcc -opolltest polltest.c */ #include #include #include #include #include void callback_alarm(int sig) { return; } int main() { struct pollfd p[3]; memset(p, 0, sizeof(struct pollfd) * 3); p[0].fd = -1; p[1].fd = -1; p[2].fd = -1; printf("no descriptor is valid - poll() must wait for 2 seconds\n"); poll(p, 3, 2000); printf("no descriptor is valid - revents for any descriptor must be 0: %d, %d, %d\n", p[0].revents, p[1].revents, p[2].revents); p[2].fd = 0; printf("no descriptor is ready - poll() must return 0: %d\n", poll(p, 3, 500)); printf("no descriptor is ready - revents for any descriptor must be 0: %d, %d, %d\n", p[0].revents, p[1].revents, p[2].revents); signal(SIGALRM, callback_alarm); alarm(1); printf("SIGALRM - poll() must return -1: %d\n", poll(p, 3, 1500)); printf("SIGALRM - revents for any descriptor must be 0: %d, %d, %d\n", p[0].revents, p[1].revents, p[2].revents); }