• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <signal.h>
4 #include <sys/procfs.h>
5 #include <sys/stropts.h>
6 #include <poll.h>
7 
main(int argc,char * argv[])8 int main(int argc, char *argv[])
9 {
10 	int pid;
11 	char proc[32];
12 	FILE *pfp;
13 	struct pollfd pfd;
14 
15 	pid = fork();
16 	if (pid == 0) {
17 		pause();
18 		exit(0);
19 	}
20 
21 	sprintf(proc, "/proc/%d", pid);
22 
23 	pfp = fopen(proc, "r+");
24 	if (pfp == NULL)
25 		goto fail;
26 
27 	if (ioctl(fileno(pfp), PIOCSTOP, NULL) < 0)
28 		goto fail;
29 
30 	pfd.fd = fileno(pfp);
31 	pfd.events = POLLPRI;
32 
33 	if (poll(&pfd, 1, 0) < 0)
34 		goto fail;
35 
36 	if (!(pfd.revents & POLLPRI))
37 		goto fail;
38 
39 	kill(pid, SIGKILL);
40 	exit(0);
41 fail:
42 	kill(pid, SIGKILL);
43 	exit(1);
44 }
45