gpt4 book ai didi

c - 如何在一致的时间间隔内停止进程以执行测量功能?

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:33 25 4
gpt4 key购买 nike

我正在编写的分析器中使用 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 秒运行一次测量函数,直到子进程退出。

最佳答案

为什么不简单地休眠 N 秒,然后执行 measure 调用?如果您安装一个 SIGCHLD 处理程序来捕获子进程退出的时间,那么例如sleep将被中断并返回剩余的秒数。

有点像

signal(SIGCHLD, sigchld_handler);

do
{
measure();
} while (sleep(N) == 0);

waitpid(...);

关于c - 如何在一致的时间间隔内停止进程以执行测量功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17859565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com