순진한 질문일 수도 있지만 open
부모 호출 시 파일 ID가 나에게 반환됩니다 4
.
자식 프로세스가 다음을 수행한다는 것이 보장됩니까?언제나4
파일 ID도 얻으시겠습니까?
답변1
성공적인 open
호출은 사용되지 않은 파일 설명자로 가장 작은 숫자를 반환합니다.
따라서 open
4가 반환되면 파일 설명자 0-3이 이미 사용 중임을 의미합니다. a가 fork
자식 프로세스에 동일한 파일 설명자를 제공하므로 자식 프로세스도 fd 0-3을 사용 중이고 fd 4는 사용 가능하므로 open
a 직후 부모 및 자식 프로세스에서 두 번의 성공적인 호출은 fork
동일한 번호를 반환합니다. 하지만 나중에 부모나 자식이 파일을 열거나 닫으면 fork
숫자가 달라질 수 있습니다 .
open
일반적으로 타당한 이유가 있고 올바르게 예측할 수 있다고 확신하지 않는 한 호출된 fd를 예측하는 데 의존해서는 안 됩니다 .
답변2
응, 모두열려 있는분기하면 파일 ID가 하위 항목에 복사됩니다.
바라보다인간 포크
하위 프로세스는 상위 프로세스의 열린 파일 설명자 세트 사본을 상속합니다. 자식의 각 파일 설명자는 부모의 해당 파일 설명자와 동일한 열린 파일 설명(open(2) 참조)을 참조합니다. 이는 두 설명자가 열린 파일 상태 플래그, 현재 파일 오프셋 및 신호 구동 I/O 속성을 공유한다는 것을 의미합니다(fcntl(2)의 F_SETOWN 및 F_SETSIG 설명 참조).