Почему существует тип идентификаторов процессов (pid_t), но не для файловых дескрипторов (fd)?

Я вижу, что pid_t typedef'd в unistd.h , а дескрипторы файлов определены как int в fcntl.h . Но поскольку они используются аналогичным образом, не имеет смысла иметь typedef для дескрипторов файлов?

Прежде чем читать другие ответы, я предполагал, что pid_t существует по причинам мобильности. В Good Ol 'Days некоторые Unixes имели short PID, у других были int PID, поэтому вы определяете системный тип для PID. Я не могу вспомнить, какая боль связана с использованием int для файлового дескриптора, даже в самые ранние дни 64-битности.

Я думаю, что это разница в философии между стандартом C (fcntl.h) и стандартом POSIX (unistd.h). C имеет столько типов, сколько необходимо (включая size_t и time_t), тогда как POSIX имеет столько типов, что делает код более понятным (например, pid_t, gid_t и size_t).

PID может использоваться для более функциональных целей при идентификации уникального процесса по отношению к определенным параметрам (например, времени, размера, продолжительности и т. Д.), Что упрощает выполнение вызовов к определенному PID, поскольку один и тот же процесс может происходить несколько раз по сравнению с x времени. Если файловым дескрипторам не нужен тип, потому что сам файл можно легко вызвать по его уникальному имени.