sysconf - získej konfigurační informace za běhu
Standardní knihovna C (
libc,
-lc)
#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.
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.
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.
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
- Maximální počet opakovaných
výskytů regulárního výrazu v
intervalové notaci \{m,n\}.
-
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).
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.
- EINVAL
-
name je neplatný.
Vysvětlení pojmů použitých v této
části viz
attributes(7).
Rozhraní |
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)
Překlad této příručky do
španělštiny vytvořili Pavel Heimlich
<
[email protected]>
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
[email protected]