Почему mode_t использует 4 байта?

Я только что прочитал о mode_t, что в основном он хранит следующую информацию:

  • 7 логических значений для типа файла (S_IFREG, S_IFDIR, S_IFCHR, S_ISBLK, S_ISFIFO, S_ISLINK, S_ISSOCK)
  • 3*3 = 9 логических значений для прав доступа (чтение, запись и выполнение для владельца, группы и других)

Таким образом, требуется 16 бит = 2 байта.Я думаю, вы могли бы даже иметь на один бит меньше для типа файла, так как это должен быть обычный файл, каталог, символьное или блочное устройство, сокет, символическая ссылка или канал. Или существуют другие типы файлов?

Итак, я только что проверил размер mode_t с помощью

printf("Size: %d byte\n", sizeof(mode_t));

Он использует 4 байта. Почему он использует 4 байта? Есть ли какая-то дополнительная информация, которую я не заметил?

редактировать: Я только что обнаружил, что mode_t определен в ptypes.inc:

type mode_t = cuint32;

cuint32 — это 32-битное целое число без знака, определенное в ctypes.inc:

type cuint32 = LongWord;

Возможно, это поможет в ответе.

6
задан Élektra 4 January 2015 в 03:17
поделиться