gpt4 book ai didi

c - 如何使用 ptrace() 观察进程直到它退出?

转载 作者:行者123 更新时间:2023-11-30 14:50:23 25 4
gpt4 key购买 nike

我正在寻找 ptrace() 调用来观察进程,直到进程退出。

我有这个可以在 OSX 上用 gcc/cc 编译:

#include <sys/types.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <stdio.h>
#include <sys/ptrace.h>


int main(int argc, char *argv[]) {
pid_t pidx = atoi(argv[1]);
printf("pid = %jd\n", (intmax_t) pidx);
ptrace(PT_ATTACHEXC, pidx, 0, 0);
wait(NULL);
}

但是,即使具有有效/现有的 pid,该程序仍会立即退出。我试图仅在 pidx 死亡后退出该程序。
这有可能吗?
理想情况下,我想要一些可以在 OSX 和 Linux 上运行的东西。

最佳答案

您的问题可能是 wait 调用立即返回,因为跟踪的“劣等”进程已挂起,等待您调试它。您将需要某种循环,在其中发出 ptrace 请求来检查子进程,然后恢复执行,然后再次调用 wait 以等待其挂起在下一个断点或其他什么地方。不幸的是,调试器 API 非常不可移植;您必须将该程序的大部分内容编写两次,一次针对 OSX,一次针对 Linux。

关于c - 如何使用 ptrace() 观察进程直到它退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038538/

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