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

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

3 Solutions collect form web for “Почему существует тип идентификаторов процессов (pid_t), но не для файловых дескрипторов (fd)?”

Прежде чем читать другие ответы, я предполагал, что 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 времени. Если файловым дескрипторам не нужен тип, потому что сам файл можно легко вызвать по его уникальному имени.

  • Почему мой stdbool.h не входит в / usr / include?
  • Связь с устройством теряется при запуске сети при загрузке?
  • Общая библиотека для всех дистрибутивов Linux
  • Как явно загружать интерпретатор оболочки в программу C
  • Рекомендации по книге Mono
  • Почему Ubuntu 16.04 исполняет ограниченное изображение C # после 90 секунд, а другие - 24X7?
  • Найти информацию о USB-устройствах на C ++
  • C на Linux: запуск 25 параллельных процессов значительно быстрее, чем запуск 24
  • Скрипт мониторинга, запущенный rc.local
  • Как я могу узнать, какие флаги компоновщика необходимы для использования данной функции библиотеки C?
  • Построить log4cxx
  • Вычисление общего использования ЦП в C
  • Linux и Unix - лучшая ОС в мире.