Linux Man на русском

  User    Syst    Libr    Device    Files    Other    Admin  



   sysconf - считывает информацию о настройках во время работы системы

sysconf(3) считывает информацию о настройках во время работы системы


ОБЗОР

#include <unistd.h>


long sysconf(int name);


ОПИСАНИЕ

POSIX позволяет приложению проверять наличие поддержки определённых параметров на стадии компиляции или выполнения или получать значения некоторых настраиваемых констант или ограничений.

На стадии компиляции это осуществляется при помощи включения <unistd.h> и/или <limits.h> и проверки значений определённых макросов.

Во время выполнения можно запрашивать числовые значение посредством функции sysconf(). Можно запросить числовые значения, которые могут зависеть от файла в файловой системе, с помощью вызовов fpathconf(3) и pathconf(3). Строковые значения можно запрашивать с помощью confstr(3).

Значения, полученные с помощью этих функций, являются системными настроечными константами. Они не изменятся пока выполняется процесс.

Для параметров, как правило, используются константы вида _POSIX_FOO, которые могут быть определены в <unistd.h>. Если параметр не определён, то его можно запросить во время выполнения. Если он определён со значением -1, то этот параметр не поддерживается. Если его значение равно 0, то соответствующие функции и заголовочные файлы существуют, но нужно во время выполнения запрашивать степень поддержки. Если он определён со значениями не -1 и 0, то параметр поддерживается. Обычно значение (например 200112L) отражает год и месяц версии POSIX, в которой описан параметр. В glibc используется значение 1, означающее, что поддержка в версии POSIX пока не опубликована. В этом случае аргумент sysconf() будет выглядеть как _SC_FOO. Список параметров смотрите в posixoptions(7).

Для переменных или ограничений, как правило, используются константы вида _FOO, возможно определённые в <limits.h>, или _POSIX_FOO, возможно определённые в <unistd.h>. Константа не будет определена, если не указано ограничение. Если константа определена, то это даёт гарантированное значение и в реальности может поддерживаться большее значение. Если приложение хочет получить преимущества учёта значений, которые могут быть разными в системах, то этого можно достичь с помощью sysconf(). В этом случае аргумент sysconf() будет выглядеть как _SC_FOO.

Переменные POSIX.1

Далее показаны имя переменной, имя аргумента sysconf(), используемого для опроса этого значения, и короткое описание.

Сначала совместимые с POSIX.1 значения.

ARG_MAX - _SC_ARG_MAX Максимально допустимая длина аргументов для семейства функций exec(3). Должна быть не меньше _POSIX_ARG_MAX (4096).

CHILD_MAX - _SC_CHILD_MAX Максимально допустимое количество одновременно работающих процессов для каждого пользовательского ID. Должно быть не меньше _POSIX_CHILD_MAX (25).

HOST_NAME_MAX - _SC_HOST_NAME_MAX Максимально допустимая длина имени узла (без завершающего null-байта), возвращаемая gethostname(2). Должна быть не меньше _POSIX_HOST_NAME_MAX (255).

LOGIN_NAME_MAX - _SC_LOGIN_NAME_MAX Максимально допустимая длина имени пользователя (включая завершающий null-байт). Должна быть не меньше _POSIX_LOGIN_NAME_MAX (9).

NGROUPS_MAX - _SC_NGROUPS_MAX Максимальное количество идентификаторов дополнительных групп.
такты часов - _SC_CLK_TCK Количество тактов часов в секунду. Данная переменная устарела. Также она называлась CLK_TCK (примечание: макрос CLOCKS_PER_SEC не даёт необходимую информацию, он должен быть равен 1000000).

OPEN_MAX - _SC_OPEN_MAX Максимально допустимое количество файлов, которое одновременно может открыть процесс. Должно быть не меньше _POSIX_OPEN_MAX (20).

PAGESIZE - _SC_PAGESIZE Размер страницы в байтах. Должен быть не меньше 1 (в некоторых системах вместо этого используется PAGE_SIZE).

RE_DUP_MAX - _SC_RE_DUP_MAX Количество повторяемых совпадений BRE, разрешённых regexec(3) и regcomp(3). Должно быть не меньше _POSIX2_RE_DUP_MAX (255).

STREAM_MAX - _SC_STREAM_MAX Максимально допустимое количество потоков, которое может одновременно открывать процесс. Если определёно, то оно имеет то же значение, что и стандартный макрос C FOPEN_MAX. Должно быть не меньше _POSIX_STREAM_MAX (8).

SYMLOOP_MAX - _SC_SYMLOOP_MAX Максимальное количество символических ссылок, допустимое при разрешении имени пути до того, как не будет возвращена ошибка ELOOP. Должно быть не меньше _POSIX_SYMLOOP_MAX (8).

TTY_NAME_MAX - _SC_TTY_NAME_MAX Максимально допустимая длина имени устройства терминала, включая завершающий байт null. Должна быть не меньше _POSIX_TTY_NAME_MAX (9).

TZNAME_MAX - _SC_TZNAME_MAX Максимально количество байт в имени часового пояса. Должно быть не меньше _POSIX_TZNAME_MAX (6).

_POSIX_VERSION - _SC_VERSION Отображает год и месяц, в котором был утверждён стандарт POSIX.1, в формате YYYYMML; значение 199009L указывает на версию сентября 1990 года.

Переменные POSIX.2

Далее перечислены значения POSIX.2, задающие ограничения для утилит.

BC_BASE_MAX - _SC_BC_BASE_MAX Отображает максимальное значение obase, принимаемое утилитой bc(1).

BC_DIM_MAX - _SC_BC_DIM_MAX Отображает максимальное количество элементов, разрешённых в массиве в bc(1).

BC_SCALE_MAX - _SC_BC_SCALE_MAX Отображает максимальное значение scale, которое может принимать bc(1).

BC_STRING_MAX - _SC_BC_STRING_MAX Отображает максимальную длину строки, которую может принимать bc(1).

COLL_WEIGHTS_MAX - _SC_COLL_WEIGHTS_MAX Отображает максимальное количество весов, которые можно назначить элементу ключевого слова LC_COLLATE order в файле определения локали

EXPR_NEST_MAX - _SC_EXPR_NEST_MAX Максимальное количество выражений, которые могут быть вложены внутри скобок expr(1).

LINE_MAX - _SC_LINE_MAX Максимальная длина входной строки утилит, или из стандартного ввода или из файла. Учитывается пробел для символа новой строки в конце.

RE_DUP_MAX - _SC_RE_DUP_MAX Максимальное количество повторяемых совпадений регулярного выражения при указании интервала в нотации \{m,n\}

POSIX2_VERSION - _SC_2_VERSION Отображает версию стандарта POSIX.2 в формате YYYYMML.

POSIX2_C_DEV - _SC_2_C_DEV Отображает, поддерживаются ли средства разработки языка Си POSIX.2.

POSIX2_FORT_DEV - _SC_2_FORT_DEV Отображает, поддерживаются ли средства разработки языка FORTRAN POSIX.2.

POSIX2_FORT_RUN - _SC_2_FORT_RUN Отображает, поддерживаются ли утилиты времени выполнения языка FORTRAN POSIX.2.

_POSIX2_LOCALEDEF - _SC_2_LOCALEDEF Отображает, поддерживается создание локалей с помощью localedef(1) согласно POSIX.2.

POSIX2_SW_DEV - _SC_2_SW_DEV Отображает, поддерживаются ли параметры утилит разработки ПО POSIX.2.

Также могут существовать следующие значения, однако они могут быть не стандартизированы.



 - _SC_PHYS_PAGES Количество страниц физической памяти. Заметим, что возможно переполнение при перемножении этого значения и _SC_PAGESIZE.

 - _SC_AVPHYS_PAGES Количество доступных в данный момент страниц физической памяти.

 - _SC_NPROCESSORS_CONF Количество настроенных процессоров.

 - _SC_NPROCESSORS_ONLN Количество процессоров онлайн (доступных).


ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Если name некорректно, то возвращается -1 и errno назначается EINVAL. В противном случае возвращается значение системного ресурса и errno не изменяется. Для параметров возвращается положительное значение, если параметр доступен, или -1, если нет. Для ограничений -1 означает, что ограничение не определено.


АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
sysconf() безвредность в потоках: безвредно (MT-Safe env)


СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001, POSIX.1-2008.

ДЕФЕКТЫ

Трудно использовать ARG_MAX, так как не указано как много места под аргумент exec(3) потребляется пользовательскими переменными окружения.

Некоторые возвращаемые значения могут быть огромны; соответствующие им объекты невозможно разместить в памяти.