Por que existe um tipo para IDs de processos (pid_t), mas não para descritores de arquivos (fd)?

Por que existe um tipo para IDs de processos (pid_t), mas não para descritores de arquivos (fd)?

Vejo que pid_testá digitado em unistd.he os descritores de arquivo estão definidos como intin fcntl.h. Mas como eles são usados ​​de maneira semelhante, não faria sentido ter um typedeffor descritores de arquivo?

Responder1

Antes de ler as outras respostas, meu palpite é que isso pid_texiste por motivos de portabilidade. Nos bons e velhos tempos, alguns Unixes tinham shortPIDs, outros tinham intPIDs, então você define um tipo específico de sistema para PID. Não me lembro de nenhuma dor envolvida no uso intde um descritor de arquivo, mesmo nos primeiros dias de 64 bits.

Responder2

Acho que esta é uma diferença de filosofia entre o padrão C (fcntl.h) e o padrão POSIX (unistd.h). C tem poucos tipos necessários (incluindo size_t e time_t), enquanto POSIX tem tantos tipos quantos tornam o código mais claro (como pid_t, gid_t e size_t).

Responder3

O PID pode ser usado para fins mais funcionais na identificação do processo único em relação a determinados parâmetros (ou seja, tempo, tamanho, duração, etc.), facilitando a realização de chamadas para o PID específico porque o mesmo processo pode ocorrer várias vezes ao longo de x quantidade de tempo. Onde os descritores de arquivo não precisam de um tipo porque o arquivo em si pode ser facilmente chamado por seu nome exclusivo.

informação relacionada