Опубликован: 15.06.2004 | Доступ: свободный | Студентов: 2557 / 712 | Оценка: 4.35 / 3.96 | Длительность: 27:47:00
ISBN: 978-5-9556-0011-6

Лекция 10: Опрос характеристик хостов и их использование в приложениях

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

Следующие конфигурационные параметры, строго говоря, относятся не к хосту, а к файловой системе или даже ее части; тем не менее, их естественно рассмотреть наряду с общесистемными характеристиками.

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-битной среде компиляции.

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Антон Коновалов
Антон Коновалов

В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13
Планируется ли актуализация материалов данного очень полезного курса?