sysconf

SYSCONF(3)               Руководство программиста Linux               SYSCONF(3)



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

ОБЗОР
       #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) потребляется пользовательскими переменными окружения.

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

СМОТРИТЕ ТАКЖЕ
       bc(1), expr(1), getconf(1), locale(1), confstr(3), fpathconf(3),
       pathconf(3), posixoptions(7)



GNU                                2015-08-08                         SYSCONF(3)