#include #include #include #include #include #include #include int main(int argc, char **argv) { int delay, ret; struct pollfd pfd; int pipesfd[2]; printf("sp \n"); if (argc != 2) return 1; delay = atoi(argv[1]); printf("delay %d.\n", delay); if (delay < 0 || delay > 1000) return 2; if (pipe(pipesfd) != 0) { fprintf(stderr, "pipe failed with errno %d.\n", errno); return 3; } pfd.fd = pipesfd[0]; pfd.events = POLLIN; if (!fork()) { sleep(delay); write(pipesfd[1], "", 1);; return 0; } sleep(1); ret = poll(&pfd, 1, -1); printf("poll returned %d.\n", ret); if (pfd.revents) printf(" events %8xh revents %8xh.\n", pfd.events, pfd.revents); return 0; }