我使用ptrace
强制另一个进程中的线程调用
sys_clone
并创建一个带有pid pid
的新线程,其克隆标记为CLONE_FILES
,
CLONE_FS
,CLONE_IO
,CLONE_PTRACE
,CLONE_SIGHAND
,CLONE_THREAD
和
CLONE_VM
。
据我所知ptrace
手册页,waitpid()对儿童有效
流程和ptrace'd流程。但是,我的程序中的以下代码
成功:
assert(ptrace(PTRACE_CONT, pid, NULL, NULL) != -1);
assert(waitpid(pid, NULL, WSTOPPED) == -1);
printf("error: %s\n", strerror(errno));
输出:
error: No child processes
为什么会这样?我已经检查过,当删除ptrace时,孩子 线程终止于断点指令(0xcc)。