Почему PID процесса представлен непрозрачным типом данных? - PullRequest
4 голосов
/ 14 февраля 2012

Пид процесса определяется как pid_t pid; тогда как pid_t является непрозрачным типом данных. Если идентификационный номер процесса может быть представлен как int, почему бы нам не объявить его как семейство int, а не скрывать его тип данных от своих пользователей?

1 Ответ

12 голосов
/ 14 февраля 2012

Это не совсем непрозрачный тип, а псевдоним целочисленного типа.Например, в моей системе я нахожу следующее в разных заголовочных файлах:

typedef __pid_t pid_t;
...
# define __STD_TYPE     typedef
__STD_TYPE __PID_T_TYPE __pid_t;    /* Type of process identifications.  */
...
#define __PID_T_TYPE        __S32_TYPE
...
#define __S32_TYPE      int

Следовательно, вы правы в том, что pid_t - это просто int.Однако я бы сказал, что для этого есть несколько причин:

  • Удобочитаемость: ясно, что переменная будет использоваться в качестве pid ( ссылка на википедию ).
  • Ремонтопригодность: убедитесь, что тип всех переменных pid может быть изменен в будущем при необходимости.Например, если pids понадобится более широкий тип данных позже (например, long int), вам просто нужно изменить typedef, перекомпилировать и все должно работать нормально.На самом деле, я считаю, что это уже происходит для разных архитектур.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...