- bookworm 4.18.1-1
- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.24.0-2
sysconf(3) | Library Functions Manual | sysconf(3) |
ИМЯ¶
sysconf - считывает информацию о настройках во время работы системы
LIBRARY¶
Standard C library (libc, -lc)
СИНТАКСИС¶
#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 - _SC_PAGE_SIZE
- Синоним PAGESIZE/_SC_PAGESIZE (PAGESIZE и PAGE_SIZE определены в POSIX).
- 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
- indicates the maximum numbers of weights that can be assigned to an entry of the LC_COLLATE order keyword in the locale definition file.
- 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
- indicates whether the POSIX.2 creation of locales via localedef(1) is supported.
- POSIX2_SW_DEV - _SC_2_SW_DEV
- Отображает, поддерживаются ли параметры утилит разработки ПО POSIX.2.
Также могут существовать следующие значения, однако они могут быть не стандартизированы.
-
- _SC_PHYS_PAGES - Количество страниц физической памяти. Заметим, что возможно переполнение при перемножении этого значения и _SC_PAGESIZE.
-
- _SC_AVPHYS_PAGES - Количество доступных в данный момент страниц физической памяти.
-
- _SC_NPROCESSORS_CONF - Количество настроенных процессоров. Смотрите также get_nprocs_conf(3).
-
- _SC_NPROCESSORS_ONLN - Количество включенных (доступных) процессоров. Смотрите также get_nprocs_conf(3).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
Возвращаемым значением sysconf() может быть одно из:
- On error, -1 is returned and errno is set to indicate the error (for example, EINVAL, indicating that name is invalid).
- Если name соответствует максимальному или минимальному ограничителю и этот ограничитель не определён, то возвращается -1 и errno не изменяется (чтобы отличать неопределённый ограничитель от ошибки, сбросьте errno в ноль пере вызовом, а затем проверьте, что errno не равно нулю, если возвращается -1).
- Если name соответствует параметру, то возвращается положительное значение, если параметр поддерживается и -1, если параметр не поддерживается.
- В противном случае возвращается текущее значение параметра или ограничителя. Это значение будет не более ограничивающем чем соответствующее значение, которое было показано приложению в <unistd.h> или <limits.h> при компиляции.
ОШИБКИ¶
- EINVAL
- Неверное значение name.
АТРИБУТЫ¶
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
sysconf() | Безвредность в нитях | MT-Safe env |
СТАНДАРТЫ¶
POSIX.1-2001, POSIX.1-2008.
ДЕФЕКТЫ¶
Трудно использовать ARG_MAX, так как не указано как много места под аргумент exec(3) потребляется пользовательскими переменными окружения.
Некоторые возвращаемые значения могут быть огромны; соответствующие им объекты невозможно разместить в памяти.
СМ. ТАКЖЕ¶
bc(1), expr(1), getconf(1), locale(1), confstr(3), fpathconf(3), pathconf(3), posixoptions(7)
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
15 декабря 2022 г. | Linux man-pages 6.02 |