sysconf(3)

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

KNIHOVNA
Standardní knihovna C (libc, -lc)

POUŽITÍ
#include <unistd.h>

long sysconf(int name);

POPIS
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.

For options, typically, there is a constant _POSIX_FOO that may be defined in <unistd.h>. If it is undefined, one should ask at run time. If it is defined to -1, then the option is not supported. If it is defined to 0, then relevant functions and headers exist, but one has to ask at run time what degree of support is available. If it is defined to a value other than -1 or 0, then the option is supported. Usually the value (such as 200112L) indicates the year and month of the POSIX revision describing the option. glibc uses the value 1 to indicate support as long as the POSIX revision has not been published yet. The sysconf() argument will be _SC_FOO. For a list of options, see 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.

ARG_MAX - _SC_ARG_MAX
    Maximální délka argumentů pro funkce z rodiny exec(3). Nesmí být méně než _POSIX_ARG_MAX (4096).

CHILD_MAX - _SC_CHILD_MAX
    Počet simultánně běžících procesů jednoho uživatele. Nesmí být méně než _POSIX_CHILD_MAX (25).

HOST_NAME_MAX - _SC_HOST_NAME_MAX
    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).

LOGIN_NAME_MAX - _SC_LOGIN_NAME_MAX
    Maximální délka loginu, která zahrnuje i ukončující null byte. Nesmí být méně než _POSIX_LOGIN_NAME_MAX (9).

NGROUPS_MAX - _SC_NGROUPS_MAX
    Maximum number of supplementary group IDs.

takt hodin - _SC_CLK_TCK
    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.)

OPEN_MAX - _SC_OPEN_MAX
    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).

PAGESIZE - _SC_PAGESIZE
    Velikost stránky v bytech. Nesmí být méně než 1.

PAGE_SIZE - _SC_PAGE_SIZE
    A synonym for PAGESIZE/_SC_PAGESIZE. (Both PAGESIZE and PAGE_SIZE are specified in POSIX.)

RE_DUP_MAX - _SC_RE_DUP_MAX
    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).

STREAM_MAX - _SC_STREAM_MAX
    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).

SYMLOOP_MAX - _SC_SYMLOOP_MAX
    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).

TTY_NAME_MAX - _SC_TTY_NAME_MAX
    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).

TZNAME_MAX - _SC_TZNAME_MAX
    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.

BC_BASE_MAX - _SC_BC_BASE_MAX
    maximální hodnota obase braná jako správná v utilitě bc(1).

BC_DIM_MAX - _SC_BC_DIM_MAX
    indicates the maximum value of elements permitted in an array by bc(1).

BC_SCALE_MAX - _SC_BC_SCALE_MAX
    maximální hodnota scale povolená bc(1).

BC_STRING_MAX - _SC_BC_STRING_MAX
    maximální délka řetězce povolená 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
    maximální počet výrazů, které mohou být vnořeny v závorkách v expr(1).

LINE_MAX - _SC_LINE_MAX
    The maximum length of a utility's input line, either from standard input or from a file. This includes space for a trailing newline.

RE_DUP_MAX - _SC_RE_DUP_MAX
    The maximum number of repeated occurrences of a regular expression when the interval notation \{m,n\} is used.

POSIX2_VERSION - _SC_2_VERSION
    verze POSIX.2 standardu ve formátu YYYYMML.

POSIX2_C_DEV - _SC_2_C_DEV
    jsou podporovány POSIX.2 standardy týkající se jazyka C ?

POSIX2_FORT_DEV - _SC_2_FORT_DEV
    jsou podporovány POSIX.2 standardy týkající se jazyka FORTRAN ?

POSIX2_FORT_RUN - _SC_2_FORT_RUN
    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.

POSIX2_SW_DEV - _SC_2_SW_DEV
    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).

NÁVRATOVÉ HODNOTY
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.

CHYBOVÉ STAVY

EINVAL
    name je neplatný.

ATRIBUTY
Vysvětlení pojmů použitých v této části viz attributes(7).
Rozhraní | Atribut | Hodnota
sysconf() | Zabezpečení vláken | MT-Safe env

STANDARDY
POSIX.1-2008.

HISTORIE
POSIX.1-2001.

CHYBY
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.

DALŠÍ INFORMACE
bc(1), expr(1), getconf(1), locale(1), confstr(3), fpathconf(3), pathconf(3), posixoptions(7)

PŘEKLAD
Překlad této příručky do češ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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.