¿Por qué existe un tipo para los identificadores de proceso (pid_t), pero no para los descriptores de archivos (fd)?

¿Por qué existe un tipo para los identificadores de proceso (pid_t), pero no para los descriptores de archivos (fd)?

Veo que pid_testá escrito en unistd.h, y los descriptores de archivos están definidos inten fcntl.h. Pero dado que se usan de manera similar, ¿no tendría sentido tener typedefdescriptores de archivos?

Respuesta1

Antes de leer las otras respuestas, supuse que pid_texiste por razones de portabilidad. En los buenos tiempos, algunos Unix tenían shortPID, otros tenían intPID, por lo que se define un tipo de PID específico del sistema. No recuerdo ningún dolor que implicara el uso intde un descriptor de archivo, incluso en los primeros días de los 64 bits.

Respuesta2

Creo que esta es una diferencia de filosofía entre el estándar C (fcntl.h) y el estándar POSIX (unistd.h). C tiene tan pocos tipos como sean necesarios (incluidos size_t y time_t), mientras que POSIX tiene tantos tipos como para aclarar el código (como pid_t, gid_t y size_t).

Respuesta3

El PID se puede utilizar con fines más funcionales para identificar el proceso único en relación con ciertos parámetros (es decir, tiempo, tamaño, duración, etc.), lo que facilita realizar llamadas al PID específico porque el mismo proceso puede ocurrir varias veces en x cantidad. de tiempo. Donde los descriptores de archivos no necesitan un tipo porque el archivo en sí mismo puede llamarse fácilmente por su nombre único.

información relacionada