我正在编写的分析器中使用 Linux ptrace API。
我的伪 C 代码如下所示:
setjmp();
measure();
alarm(N);
while(1) {
waitpid(child, &status, WNOHANG);
if(child_process_exiting) {
measure();
break;
}
}
报警信号处理程序如下:
void sig_handler(int sig) {
signal(SIGALRM, sig_handler);
longjmp(env, 0);
}
我想反复返回 setjmp 调用,直到子进程退出并中断循环。目标是每 N 秒运行一次测量函数,直到子进程退出。