별도의 pid 네임스페이스에서 각 하위 프로세스를 생성하는 방법

별도의 pid 네임스페이스에서 각 하위 프로세스를 생성하는 방법

사용하는 방법 unshare(사용하지 않는 방법 CLONE_NEWPID flag in child process clone syscall)은 별도의 PID 네임스페이스에 각 하위 프로세스를 생성합니다. PID 네임스페이스에서 첫 번째 하위 항목을 성공적으로 생성할 수 있지만 다른 PID 네임스페이스에서 두 번째 하위 항목을 생성하는 방법을 잘 모르겠습니다.

상위 프로세스의 의사 코드

1 unshare CLONE_NEWPID
2 spawn child1
3
4 unshare CLONE_NEWPID
5 spawn child2

여기서 child1은 별도의 PID 네임스페이스를 입력하고 PID 1을 가져옵니다. 실행이 4행에 도달하면 Sys(EINVAL)오류가 발생합니다.

답변1

매뉴얼을 읽는 것은 unshare CLONE_NEWPID하위 프로세스가 아닌 호출 프로세스에 영향을 미칩니다. 이것을 여러 번 호출하는 것은 중복되는 것 같습니다. 첫 번째 호출 이후 모든 하위 프로세스는 새 pid 네임스페이스에 있습니다.

그들을 제자리에 두려면 전화할 다른 부모가 필요합니다 unshare CLONE_NEWPID.

노력하다

repeat:
    fork
    if child:
        unshare CLONE_NEWPID
        spawn 

이것은 모두 테스트되지 않았으며 이것이 제가 다음에 시도할 것입니다. 나는 또한 당신이 사용해야한다는 것을 읽었습니다 clone.

관련 정보