Por que existe um tipo para ids de processo (pid_t), mas não para descritores de arquivo (fd)?

5

Vejo que pid_t é digitado em unistd.h e os descritores de arquivo estão definidos como int em fcntl.h . Mas como eles são usados de maneira semelhante, não faria sentido ter um typedef para descritores de arquivos?

    
por Nicholas 30.03.2012 / 20:24

3 respostas

4

Antes de ler as outras respostas, acho que pid_t existe por razões de portabilidade. Nos bons dias, alguns Unixes tinham short PIDs, outros tinham int PIDs, então você define um tipo específico de sistema para PID. Não me lembro de qualquer dor envolvida no uso de int para um descritor de arquivo, mesmo nos primórdios da 64 bits.

    
por 30.03.2012 / 22:04
1

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

    
por 30.03.2012 / 20:31
1

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

    
por 30.03.2012 / 21:28