我正在尝试ptrace一个sshd守护进程。以下简单程序附加到守护程序。每当关闭ssh客户端连接时,新生成的sshd进程将变为僵尸进程。你能给我任何评论吗?提前谢谢。
int main(int argc, char *argv[])
{
pid_t traced_process;
int status = 0;
if(argc != 2){
printf("Usage: %s <pid to be traced>\n", argv[0]);
exit(1);
}
traced_process = atoi(argv[1]);
ptrace(PTRACE_ATTACH, traced_process, NULL, NULL);
while(1){
wait(&status);
if(WIFEXITED(status)){
break;
}
ptrace(PTRACE_SYSCALL, traced_process, NULL, NULL);
} // end of while
return 0;
}
答案 0 :(得分:0)
通过ptrace关于PTRACE_ATTACH的手册页,调用进程在ps输出中显示为子进程的父进程。但是,附加到ptrace监视进程的交互式服务守护程序(sshd或xinted)的PPID仍然是它们原始的INIT进程。我想知道为什么不改变手册中显示的PPID?