Книга: Разработка приложений в среде Linux. Второе издание
6.2.1. Обязательные типы POSIX
6.2.1. Обязательные типы POSIX
POSIX описывает некоторые определения типов в заголовочном файле <sys/types.h>
, которые используются для многих аргументов и возвращаемых значений. Эти определения типов важны, потому что стандартные типы языка С могут быть разными на различных машинах, так как они нестрого определены в стандарте С. Из-за такого нестрогого определения язык С полезен на широком диапазоне оборудования — размер слов на 16-разрядных машинах отличается от такового на 64-разрядных машинах, а язык программирования низкого уровня не должен скрывать эту разницу — но для POSIX требуется большая гарантия. От заголовочного файла библиотеки С <sys/types.h>
требуется определение набора соответствующих типов для каждой машины, которая поддерживает POSIX. Каждый из этих определений типов можно легко отличить от собственного типа С, поскольку он заканчивается на _t
.
Ниже описано подмножество, используемое для интерфейсов.
dev_t |
Арифметический тип данных, содержащий старшие (major) и младшие (minor) числа, соответствующие специальным файлам устройств, обычно расположенным в подкаталоге /dev . В Linux dev_t можно манипулировать с помощью макросов major() , minor() и makedev() , которые определены в <sys/sysmacros.h> . Обычно dev_t используется только в системном программировании, описанном в главе 11. |
uid_t , gid_t |
Целочисленные типы, содержащие уникальные идентификаторы, соответственно, пользователя и группы. Удостоверения идентификаторов пользователя и группы рассматриваются в главе 10. |
pid_t |
Целочисленный тип, обеспечивающий уникальное значение для системного процесса (описан в главе 10). |
id_t |
Целочисленный тип, способный хранить без усечения любой тип pid_t , uid_t или gid_t . |
off_t |
Целочисленный тип со знаком для измерения размера файла в байтах. |
size_t |
Целочисленный тип без знака для измерения размеров объектов в памяти, например, символьных строк, массивов или буферов. |
ssize_t |
Целочисленный тип со знаком для подсчета байтов (положительные значения) или хранения кода возврата ошибки (отрицательные значения). |
time_t |
Целочисленный тип (во всех обычных системах) или тип с плавающей точкой (позволяет рассматривать VMS как операционную систему POSIX), выдающий время в секундах, как описано в главе 18. |
Типы намеренно описаны нечетко. Нет никакой гарантии, что типы будут одинаковыми на двух разных платформах Linux или даже в двух различных средах, работающих на одной и той же платформе. Скорее всего, 64-разрядная машина, поддерживающая как 64-разрядную, так и 32-разрядную среды, будет иметь разные значения для некоторых из этих типов в каждой среде.
Кроме того, в будущих версиях Linux представленные типы могут изменяться в рамках, установленных стандартом POSIX.
- 6.2. Интерфейсы POSIX
- Типы данных для работы с датой и временем
- Большие целые типы
- Типы страниц и их использование
- 1.2.3. Константы, переменные и типы
- 4. Лекция: Типы данных
- 9.1. Классы и прототипы
- 4. Кортежи. Типы кортежей
- 5. Отношения. Типы отношений
- 1. Базовые типы данных
- 1. Различные типы и кратности связей
- 1.7 Иерархия драйверов систем хранения и типы драйверов