В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13 |
Лекция 10: Опрос характеристик хостов и их использование в приложениях
Следующие конфигурационные параметры, строго говоря, относятся не к хосту, а к файловой системе или даже ее части; тем не менее, их естественно рассмотреть наряду с общесистемными характеристиками.
FILESIZEBITS (32)
Минимальное число бит, необходимое для представления размера обычного файла в виде целочисленного значения со знаком.
LINK_MAX (_POSIX_LINK_MAX = 8)
Максимально допустимое число жестких ссылок на файл.
MAX_CANON (_POSIX_MAX_CANON = 255)
Максимально допустимое число байт во входной строке при каноническом вводе с терминала.
MAX_INPUT (_POSIX_MAX_INPUT = 255)
Максимально допустимое число байт во входной терминальной очереди.
NAME_MAX (_POSIX_NAME_MAX = 14)
Максимально допустимая длина простого имени файла (без завершающего нулевого байта).
PATH_MAX (_POSIX_PATH_MAX = 256)
Максимально допустимая длина маршрутного имени файла (с учетом завершающего нулевого байта).
PIPE_BUF (_POSIX_PIPE_BUF = 512)
Максимально допустимое число байт, которое можно неделимым образом записать в канал.
SYMLINK_MAX (_POSIX_SYMLINK_MAX = 255)
Максимально допустимое число байт в символьной ссылке.
Следующие конфигурационные константы определяют границы числовых значений различных типов для целевой конфигурации, которые могут стать предметом проверок в директивах условной компиляции.
CHAR_BIT (8)
Число бит в значении типа char.
CHAR_MAX
Максимальное значение типа char. Совпадает с UCHAR_MAX или SCHAR_MAX.
CHAR_MIN
Минимальное значение типа char ( SCHAR_MIN или 0 ).
INT_MAX (2147483647).
Максимальное значение типа int.
LONG_BIT (32)
Число бит в значении типа long.
LONG_MAX (2147483647)
Максимальное значение типа long.
SCHAR_MAX (127)
Максимальное значение типа signed char.
SHRT_MAX (32767)
Максимальное значение типа short.
SSIZE_MAX (_POSIX_SSIZE_MAX = 32767)
Максимальное значение типа ssize_t.
UCHAR_MAX (255)
Максимальное значение типа unsigned char.
UINT_MAX (4294967295)
Максимальное значение типа unsigned int.
ULONG_MAX (4294967295)
Максимальное значение типа unsigned long.
USHRT_MAX (65535)
Максимальное значение типа unsigned short.
WORD_BIT (16)
Число бит в слове или значении типа int.
INT_MIN (-2147483647)
Минимальное значение типа int.
LONG_MIN (-2147483647)
Минимальное значение типа long.
SCHAR_MIN (-128)
Минимальное значение типа signed char.
SHRT_MIN (-32767)
Минимальное значение типа short.
LLONG_MIN (-9223372036854775807)
Минимальное значение типа long long.
LLONG_MAX (9223372036854775807)
Максимальное значение типа long long.
ULLONG_MAX (18446744073709551615)
Максимальное значение типа unsigned long long.
Некоторые полезные конфигурационные константы определены в заголовочном файле <stdio.h>.
BUFSIZ
Размер буферов ввода/вывода.
L_ctermid
Максимальный размер символьного массива для хранения имени управляющего терминала - результата функции ctermid().
L_tmpnam
Максимальный размер символьного массива для хранения имени временного файла – результата функции tmpnam().
FILENAME_MAX
Максимально допустимое число байт в имени открываемого файла.
TMP_MAX (25)
Максимально допустимое число обращений к функции tmpnam(), при котором гарантируется уникальность генерируемых имен.
Упоминавшаяся ранее служебная программа getconf
getconf [-v спецификация] конфигурационный_параметр getconf [-v спецификация] конфигурационный_параметр маршрутное_имя
а также функции sysconf(), confstr(), fpathconf() и pathconf() (см. листинг 10.5) предназначены для опроса значений системных параметров во время выполнения. Первая из перечисленных функций опрашивает лимитирующие конфигурационные параметры, имеющие числовые значения, вторая возвращает конфигурационные цепочки символов, а две последние – конфигурационные значения, относящиеся к файлам.
#include <unistd.h> long sysconf (int name); size_t confstr (int name, char *buf, size_t len); long fpathconf (int fildes, int name); long pathconf (const char *path, int name);Листинг 10.5. Описание функций sysconf(), confstr(), fpathconf() и pathconf().
Утилита getconf выдает на стандартный вывод значение конфигурационного параметра, которое во второй форме может быть специфичным для файловой системы или даже для файла. В первом приближении можно считать, что по набору опрашиваемых параметров она эквивалентна совокупности функций, представленных в листинге 10.5, только в именах, обслуживаемых функцией confstr(), нужно удалять префикс _CS_.
-v спецификация
задает опрашиваемую конфигурацию и версию. По умолчанию используется подразумеваемое для данной реализации окружение.
Например, если определен конфигурационный параметр _POSIX_V6_ILP32_OFF32, то команда вида
getconf -v _POSIX_V6_ILP32_OFF32 ...
опрашивает значения, соответствующие 32-битной среде компиляции.