linux trace 进程,在ptraced Linux进程中调用ptrace

有人在Wikipedia “ptrace” article中声称,在Linux上,一个ptraced进程本身无法进行另一个进程.我试图确定是否(以及如果是这样的原因)就是这种情况.下面是一个我试图测试的简单程序.我的程序失败(子子进程无法正常运行)但我确信这是我的错误,而不是基本的东西.

从本质上讲,初始过程A分叉进程B进而分叉C.对其子B进行ptra,B对其子进行处理C.一旦它们被设置,所有三个进程都被写入只打印A,B或C到stdout每秒一次.

在实践中发生的事情是A和B工作正常,但C只打印一次然后卡住.检查ps -eo pid,cmd,wchan显示C卡在内核函数ptrace_stop中,而其余的都在hrtimer_nanosleep中,我希望这三个都是.

偶尔三个都可以工作(所以程序打印Cs以及As和Bs),这让我相信初始设置中存在一些竞争条件.

我猜测可能出现的问题是:

>与A有关A看到与B相关的SIGCHLD看到SIGCHLD与C的信号有关,并等待(2)将​​两者报告为来自B(但是对两个pids的一个hacky调用PTRACE_CONT并不能解决问题) ?

> C应该被B跟踪 – C代替继承了ptrace(而B的调用ptrace既没有错也没有覆盖它)?

谁能弄清楚我做错了什么?谢谢.

#include dio.h>

#include

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值