데몬이 init(Pid 1)로 재설정되면 원래 PPID가 어디에 저장됩니까?

데몬이 init(Pid 1)로 재설정되면 원래 PPID가 어디에 저장됩니까?

대답은 '아니오'라고 확신하지만 데몬을 데몬화하고 후속적으로 부모를 다시 지정하기 전에 데몬의 원래 부모 프로세스를 해독하는 것이 가능한지 궁금합니다.

답변1

대답은 OS에 따라 다르지만 적어도 Linux에서는 관련 프로세스가 정보를 어딘가에 기록하지 않는 한 원래 상위 프로세스의 메모리가 없습니다.

리눅스 커널두 상위 프로세스를 모두 추적합니다., 하지만 이는 ptrace원래 상위 프로세스를 추적하지 않기 위한 것입니다. 그럼에도 불구하고 프로세스가 종료되면 해당 데이터 구조가 삭제되므로 가리킬 정보가 없으며 원래 상위 프로세스 pid를 유지하는 것은 pid가 재활용되므로 궁극적으로 오해의 소지가 있습니다.

답변2

아니요.

직접 추적해야 합니다. Linux에서는 다음을 빌드할 수 있습니다.진짜, 과거 프로세스 트리를 사용하여프로세스 커넥터, 하지만 불행히도 기능 자체는 매우 빠릅니다. proc_connector를 사용하는 예제 프로그램은 다음과 같습니다.여우탑.

실제로하고 싶은 일을 더 잘 설명하십시오.

ptracing/과 같은 몇 가지 간단하지만 일반적이지는 않은 트릭이 있습니다.기총소사상위 프로세스 또는 모든 하위 항목에 상속될 상위 프로세스에 환경 변수를 설정합니다.

참고: Linux에서는 하위 프로세스를 PID 1("하위 리퍼") 이외의 프로세스로 재할당할 수 있습니다.

관련 정보