]> granicus.if.org Git - strace/blob - test/procpollable.c
Fix duplicate for sys_create_module
[strace] / test / procpollable.c
1 #include <stdio.h>
2 #include <signal.h>
3 #include <sys/procfs.h>
4 #include <sys/stropts.h>
5 #include <poll.h>
6 main()
7 {
8         int pid;
9         char proc[32];
10         FILE *pfp;
11         struct pollfd pfd;
12
13         if ((pid = fork()) == 0) {
14                 pause();
15                 exit(0);
16         }
17         sprintf(proc, "/proc/%d", pid);
18         if ((pfp = fopen(proc, "r+")) == NULL)
19                 goto fail;
20         if (ioctl(fileno(pfp), PIOCSTOP, NULL) < 0)
21                 goto fail;
22         pfd.fd = fileno(pfp);
23         pfd.events = POLLPRI;
24         if (poll(&pfd, 1, 0) < 0)
25                 goto fail;
26         if (!(pfd.revents & POLLPRI))
27                 goto fail;
28         kill(pid, SIGKILL);
29         exit(0);
30 fail:
31         kill(pid, SIGKILL);
32         exit(1);
33 }