프로세스 ID(pid_t)에는 유형이 있지만 파일 설명자(fd)에는 유형이 없는 이유는 무엇입니까?

프로세스 ID(pid_t)에는 유형이 있지만 파일 설명자(fd)에는 유형이 없는 이유는 무엇입니까?

pid_t에 정의되어 unistd.h있고 파일 설명자가 int에 정의되어 있음을 알 수 있습니다 fcntl.h. 하지만 비슷한 방식으로 사용되기 때문에 typedeffor 파일 설명자를 사용하는 것이 합리적이지 않을까요?

답변1

다른 응답을 읽기 전에 이것이 pid_t이식성의 이유로 존재한다고 생각합니다. 예전에는 일부 Unix에는 shortPID가 있었고 다른 Unix에는 intPID가 있었으므로 PID에 대해 시스템별 유형을 정의할 수 있었습니다. int64비트 초기에도 파일 설명자를 사용하는 데 어려움을 겪은 기억이 없습니다 .

답변2

저는 이것이 C 표준(fcntl.h)과 POSIX 표준(unistd.h)의 철학적 차이라고 생각합니다. C에는 가능한 한 적은 유형(size_t 및 time_t 포함)이 있는 반면, POSIX에는 코드를 더 명확하게 만들기 위해 가능한 한 많은 유형(예: pid_t, gid_t, size_t)이 있습니다.

답변3

PID는 특정 매개변수(예: 시간, 크기, 기간 등)와 관련된 고유한 프로세스를 식별하기 위해 보다 기능적인 목적으로 사용될 수 있으며, 동일한 프로세스가 x 시간 내에 여러 번 발생할 수 있으므로 특정 PID를 더 쉽게 호출할 수 있습니다. 파일 설명자에는 유형이 필요하지 않습니다. 파일 자체는 고유한 이름으로 쉽게 호출할 수 있기 때문입니다.

관련 정보