procpollable.c

来自「linux进程跟踪的工具和源代码」· C语言 代码 · 共 34 行

C
34
字号
#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);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?