home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <signal.h>
- #include <sys/procfs.h>
- #include <sys/stropts.h>
- #include <poll.h>
- main()
- {
- int pid;
- char proc[32];
- FILE *pfp;
- struct pollfd pfd;
-
- if ((pid = fork()) == 0) {
- pause();
- exit(0);
- }
- sprintf(proc, "/proc/%d", pid);
- if ((pfp = fopen(proc, "r+")) == NULL)
- goto fail;
- if (ioctl(fileno(pfp), PIOCSTOP, NULL) < 0)
- goto fail;
- pfd.fd = fileno(pfp);
- pfd.events = POLLPRI;
- if (poll(&pfd, 1, 0) < 0)
- goto fail;
- if (!(pfd.revents & POLLPRI))
- goto fail;
- kill(pid, SIGKILL);
- exit(0);
- fail:
- kill(pid, SIGKILL);
- exit(1);
- }
-