home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / d / strace / strace-3.000 / strace-3 / strace-3.0 / test / procpollable.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-29  |  571 b   |  34 lines

  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. }
  34.