SYSCONF(3) Linux - příručka programátora SYSCONF(3)

sysconf - získej konfigurační informace za běhu

#include <unistd.h>
long sysconf(int name);

POSIX dovoluje aplikaci v čase překladu, nebo běhu aplikace, testovat, zda jsou určité volby podporovány, nebo jaké jsou hodnoty těchto konfigurovatelných systémových parametrů.

V čase překladu se toto děje pomocí vložení <unistd.h> a/nebo <limits.h> a testování hodnot příslušných maker.

V čase běhu, se můžeme dotazovat na numerické hodnoty použitím funkce sysconf(). Pokud se budeme dotazovat na hodnoty, které jsou závislé na souborovém systému, je vhodné použít volání fpathconf(3) nebo pathconf(3). Pro dotazování se na hodnoty řetězců je vhodné použít confstr(3).

Hodnoty získané z těchto funkcí jsou systémové konstanty. Nemění se po dobu života procesu.

Pro jednotlivé proměnné existuje obvykle konstanta _POSIX_FOO definovaná v <unistd.h>. Pokud definované nejsou, můžeme se dotazovat v době běhu programu. Pokud je hodnota definována jako -1, potom není podporována. Pokud je definováno na hodnotu 0, pak dané funkce a hlavičky existují, nicméně musíme se dotazovat v době běhu programu, jaký stupeň podpory je k dispozici. Pokud je hodnota definována jinak než 0 nebo -1 pak je nastaveni podporováno. Obvykle hodnota (jako například 200112L) signalizuje rok a měsíc POSIXové revize popisující dané nastavení. Glibc používá hodnotu 1 k signalizace podpory, protože POSIX standard ještě stále nebyl zapracován do Glibc. Argumentem sysconf() bude _SC_FOO. Pro seznam voleb viz posixoptions(7).

Pro proměnné, nebo limity obvykle existuje konstanta _FOO, která je definována v <limits.h>, nebo _POSIX_FOO, kterou lze nalézt v <unistd.h>. Konstanta nebude definována, pokud není specifikován limit. Pokud je konstanta definována, definuje zaručenou hodnotu a dokonce může být podporována i vyšší hodnota. Pokud chce aplikace využívat hodnot, které se mohou měnit mezi jednotlivými systémy, může být volán sysconf(). Argumentem sysconf() bude _SC_FOO.

Proměnné POSIX.1

Uvádíme jméno proměnné, jméno parametru funkce sysconf(), který je používán pro dotazování se na tuto hodnotu, a krátký popis.

Nejdříve proměnné kompatibilní s POSIX.1.

Maximální délka argumentů pro funkce z rodiny exec(3). Nesmí být méně než _POSIX_ARG_MAX (4096).
Počet simultánně běžících procesů jednoho uživatele. Nesmí být méně než _POSIX_CHILD_MAX (25).
Maximální délka hostname, která nezahrnuje ukončující null byte, tak jak jej vrací funkce gethostname(2). Nesmí být méně než _POSIX_HOST_NAME_MAX (255).
Maximální délka loginu, která zahrnuje i ukončující null byte. Nesmí být méně než _POSIX_LOGIN_NAME_MAX (9).
Maximum number of supplementary group IDs.
Počet taktů hodin za sekundu. Odpovídající proměnná je zastaralá. Samozřejmě byla nazvána CLK_TCK. (Poznámka: makro CLOCKS_PER_SEC nedává žádnou informaci: musí být rovno 1000000.)
Maximální počet souborů, které může mít proces v libovolný okamžik otevřen. Nesmí být méně než _POSIX_OPEN_MAX (20).
Velikost stránky v bytech. Nesmí být méně než 1.
A synonym for PAGESIZE/_SC_PAGESIZE. (Both PAGESIZE and PAGE_SIZE are specified in POSIX.)
Počet opakujících se výskytů BRE povolených regexec(3) a regcomp(3). Nesmí být méně než _POSIX2_RE_DUP_MAX (255).
Maximální počet proudů, které může mít proces kdykoliv otevřen. Pokud je definován, má stejnou hodnotu jako C makro FOPEN_MAX. Nesmí být méně než _POSIX_STREAM_MAX (8).
Maximální počet symbolických linků, které jsou vidět ve jméně souboru, než se vrátí ELOOP. Nesmí být méně než _POSIX_SYMLOOP_MAX (8).
Maximální délka jména terminálu, včetně ukončujícího null bytu. Nesmí být méně než _POSIX_TTY_NAME_MAX (9).
Maximální počet bytů ve jménu časového pásma. Nesmí být méně než _POSIX_TZNAME_MAX (6).
_POSIX_VERSION - _SC_VERSION
indicates the year and month the POSIX.1 standard was approved in the format YYYYMML; the value 199009L indicates the Sept. 1990 revision.

Proměnné POSIX.2

Next, the POSIX.2 values, giving limits for utilities.

maximální hodnota obase braná jako správná v utilitě bc(1).
indicates the maximum value of elements permitted in an array by bc(1).
maximální hodnota scale povolená bc(1).
maximální délka řetězce povolená bc(1).
indicates the maximum numbers of weights that can be assigned to an entry of the LC_COLLATE order keyword in the locale definition file.
maximální počet výrazů, které mohou být vnořeny v závorkách v expr(1).
The maximum length of a utility's input line, either from standard input or from a file. This includes space for a trailing newline.
Maximální počet opakovaných výskytů regulárního výrazu v intervalové notaci \{m,n\}.
verze POSIX.2 standardu ve formátu YYYYMML.
jsou podporovány POSIX.2 standardy týkající se jazyka C ?
jsou podporovány POSIX.2 standardy týkající se jazyka FORTRAN ?
jsou podporovány POSIX.2 FORTRAN utility ?
_POSIX2_LOCALEDEF - _SC_2_LOCALEDEF
indicates whether the POSIX.2 creation of locales via localedef(1) is supported.
je podporována volba POSIX.2 vývojových utilit ?

Následující hodnoty také existují, ale nejsou standard.


- _SC_PHYS_PAGES
The number of pages of physical memory. Note that it is possible for the product of this value and the value of _SC_PAGESIZE to overflow.

- _SC_AVPHYS_PAGES
Počet aktuálně dostupných stránek fyzické paměti.

- _SC_NPROCESSORS_CONF
Počet nakonfigurovaných procesorů. Viz get_nprocs_conf(3).

- _SC_NPROCESSORS_ONLN
Počet dostupných online procesorů. Viz get_nprocs_conf(3).

The return value of sysconf() is one of the following:

  • On error, -1 is returned and errno is set to indicate the error (for example, EINVAL, indicating that name is invalid).
  • If name corresponds to a maximum or minimum limit, and that limit is indeterminate, -1 is returned and errno is not changed. (To distinguish an indeterminate limit from an error, set errno to zero before the call, and then check whether errno is nonzero when -1 is returned.)
  • If name corresponds to an option, a positive value is returned if the option is supported, and -1 is returned if the option is not supported.
  • Otherwise, the current value of the option or limit is returned. This value will not be more restrictive than the corresponding value that was described to the application in <unistd.h> or <limits.h> when the application was compiled.

name je neplatný.

For an explanation of the terms used in this section, see attributes(7).

Interface Atribut Hodnota
sysconf() Thread safety MT-Safe env

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

Je velmi těžké používat ARG_MAX protože není specifikováno, jaké množství paměti je při volání exec(3) spotřebováno uživatelskými proměnnými v prostředí.

Některé hodnoty mohou být příliš velké; nejsou vhodné k alokování paměti.

bc(1), expr(1), getconf(1), locale(1), confstr(3), fpathconf(3), pathconf(3), posixoptions(7)

Tato stránka je součástí projektu Linux man-pages v5.13. Popis projektu a informace o hlášení chyb najdete na https://www.kernel.org/doc/man-pages/.

Překlad této příručky do španělštiny vytvořili Pavel Heimlich <tropikhajma@gmail.com>

Tento překlad je bezplatná dokumentace; Přečtěte si GNU General Public License Version 3 nebo novější ohledně podmínek autorských práv. Neexistuje ŽÁDNÁ ODPOVĚDNOST.

Pokud narazíte na nějaké chyby v překladu této příručky, pošlete e-mail na adresu translation-team-cs@lists.sourceforge.net.

22. března 2021 GNU