포크 호출 후 두 프로세스 모두 동일한 PID를 갖습니다.

포크 호출 후 두 프로세스 모두 동일한 PID를 갖습니다.

fork문서 에 따르면 ( man 2 fork):

하위 프로세스는 다음 사항을 제외하고 상위 프로세스와 동일합니다.

  • 하위 프로세스에는 고유한 프로세스 ID가 있으며 이 PID는 기존 프로세스 그룹(setpgid(2))의 ID와 일치하지 않습니다.

그렇다면 이는 서로 다른 두 프로세스 그룹에 속한 두 프로세스가 동일한 PID를 가질 수 있다는 의미입니까? 이것은 나에게 이해가 되지 않지만 fork기존 PGID와 동일한 새 PID가 없도록 강제되므로 포크에서 새로 생성된 프로세스와 동일한 PID를 가진 비리더 프로세스가 있을 수 있습니다. 그렇지 않습니까?

답변1

프로세스 ID는 고유합니다.

모든POSIX fork()문서:

설명하다

fork() 함수는 새로운 프로세스를 생성해야 합니다. 새 프로세스(자식 프로세스)는 아래에 자세히 설명된 경우를 제외하고 호출 프로세스(상위 프로세스)의 정확한 복사본이어야 합니다.

  • 하위 프로세스에는 고유한 프로세스 ID가 있어야 합니다.
  • 하위 프로세스 ID는 활성 프로세스 그룹 ID와도 일치해서는 안 됩니다.
  • 하위 프로세스에는 호출 프로세스의 프로세스 ID인 다른 상위 프로세스 ID가 있어야 합니다.

...

관련 정보