sysconf - pobieranie informacje o konfiguracji w trakcie uruchomienia
Standardowa biblioteka C (
libc,
-lc)
#include <unistd.h>
long sysconf(int name);
POSIX pozwala testować w czasie kompilowania aplikacji lub w czasie jej
działania, czy pewne opcje są wspierane lub jakie są
wartości pewnych konfigurowalnych stałych lub limitów.
W czasie kompilacji jest to robione przez zainkludowanie
<unistd.h>
lub
<limits.h> i testowanie wartości pewnych makr.
At run time, one can ask for numerical values using the present function
sysconf(). One can ask for numerical values that may depend on the
filesystem in which a file resides using
fpathconf(3) and
pathconf(3). One can ask for string values using
confstr(3).
Wartości zwracane przez powyższe funkcje są stałymi
dotyczącymi konfiguracji systemu, które nie zmienią
się przez cały czas życia 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).
Dla zmiennych lub limitów zazwyczaj istnieje stała
_COŚ definiowana w
<limits.h> lub
_POSIX_COŚ definiowana w
<unistd.h>. Stała
nie będzie zdefiniowana, jeżeli limit nie jest określony.
Jeżeli stała jest zdefiniowana, to określa gwarantowany
limit, ale w rzeczywistości może być wspierana
wartość większa niż wynosi wartość
tej stałej. Jeśli aplikacja chce zrobić użytek ze
zmiennych, których wartości mogą się
różnić w zależności od systemu, może
wywołać funkcję
sysconf(). Argumentem funkcji
sysconf() będzie
_SC_COŚ.
W tabeli poniżej podajemy nazwę zmiennej, nazwę argumentu
funkcji
sysconf(), używanego do odpytania o jej
wartość, oraz krótki opis.
Najpierw wartości zgodne z POSIX.1.
-
ARG_MAX - _SC_ARG_MAX
- Maksymalna długość argumentów
funkcji z rodziny exec(3). Nie może być mniejsza
niż _POSIX_ARG_MAX (4096).
-
CHILD_MAX - _SC_CHILD_MAX
- Maksymalna liczba równoczesnych procesów
jednego użytkownika. Nie może być mniejsza niż
_POSIX_CHILD_MAX (25).
-
HOST_NAME_MAX - _SC_HOST_NAME_MAX
- Maksymalna długość nazwy komputera,
pomijając końcowy bajt NULL, zwracana przez
gethostname(2). Nie może być mniejsza niż
_POSIX_HOST_NAME_MAX (255).
-
LOGIN_NAME_MAX - _SC_LOGIN_NAME_MAX
- Maksymalna długość nazwy
użytkownika, łącznie z końcowym znakiem NULL.
Nie może być mniejsza niż
_POSIX_LOGIN_NAME_MAX (9).
-
NGROUPS_MAX - _SC_NGROUPS_MAX
- Maksymalna liczba identyfikatorów dodatkowych
grup.
- tyknięcia zegara - _SC_CLK_TCK
- Liczba tyknięć zegara na sekundę.
Odpowiadająca jej zmienna jest przestarzała, a była
oczywiście nazwana CLK_TCK. (Uwaga: makro
CLOCKS_PER_SEC nie dostarcza informacji: jego wartość
musi być równa 1000000).
-
OPEN_MAX - _SC_OPEN_MAX
- Maksymalna liczba plików, które proces
może mieć otwarte w dowolnym czasie. Nie może
być mniejsza niż _POSIX_OPEN_MAX (20).
-
PAGESIZE - _SC_PAGESIZE
- Size of a page in bytes. Must not be less than 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
- Liczba powtórzonych wystąpień BRE
dopuszczalnych w regexec(3) i regcomp(3). Nie może
być mniejsza niż _POSIX2_RE_DUP_MAX (255).
-
STREAM_MAX - _SC_STREAM_MAX
- Maksymalna liczba strumieni, którą proces
może otworzyć w dowolnym czasie. Jeśli jest
zdefiniowana, to ma taką samą wartość jak
standardowe makro FOPEN_MAX w C. Nie może być
mniejsza niż _POSIX_STREAM_MAX (8).
-
SYMLOOP_MAX - _SC_SYMLOOP_MAX
- Maksymalna liczba dowiązań symbolicznych w
ścieżce nie powodująca zwrócenia
błędu ELOOP. Nie może być mniejsza
niż _POSIX_SYMLOOP_MAX (8).
-
TTY_NAME_MAX - _SC_TTY_NAME_MAX
- Maksymalna długość nazwy
urządzenia terminalowego, włączając
końcowy znak NULL. Nie może być mniejsza niż
_POSIX_TTY_NAME_MAX (9).
-
TZNAME_MAX - _SC_TZNAME_MAX
- Maksymalna liczba bajtów w nazwie strefy czasowej.
Nie może być mniejsza niż _POSIX_TZNAME_MAX
(6).
-
_POSIX_VERSION - _SC_VERSION
- Określa rok i miesiąc, w formacie
YYYYMML, w którym został zaakceptowany standard
POSIX.1. Na przykład wartość 199009L oznacza
wersję standardu z września 1990 roku.
Następnie podajemy wartości POSIX.2 określające
limity dla programów użytkowych.
-
BC_BASE_MAX - _SC_BC_BASE_MAX
- Określa maksymalną wartość
obase akceptowaną przez program użytkowy
bc(1).
-
BC_DIM_MAX - _SC_BC_DIM_MAX
- Określa maksymalną dopuszczalną
liczbę elementów w tabelach w programie bc(1).
-
BC_SCALE_MAX - _SC_BC_SCALE_MAX
- Określa maksymalną wartość
scale akceptowaną przez program użytkowy
bc(1).
-
BC_STRING_MAX - _SC_BC_STRING_MAX
- Określa maksymalną
długość łańcucha znaków
akceptowanego przez 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
- Określa maksymalną liczbę
wyrażeń zagnieżdżonych w nawiasach,
akceptowaną przez program expr(1).
-
LINE_MAX - _SC_LINE_MAX
- Maksymalna długość linii
wejściowej (łącznie ze znakiem końca linii)
programu użytkowego pochodzącej albo ze standardowego
wejścia, albo z pliku.
-
RE_DUP_MAX - _SC_RE_DUP_MAX
- Maksymalna liczna powtórzonych
wystąpień wyrażenia regularnego, jeżeli jest
używana notacja \{m,n\}.
-
POSIX2_VERSION - _SC_2_VERSION
- Określa wersję standardu POSIX.2 w formacie
YYYYMML.
-
POSIX2_C_DEV - _SC_2_C_DEV
- Określa, czy są wspierane użytki
zgodne z POSIX.2 służące do rozwijania oprogramowania
w języku C.
-
POSIX2_FORT_DEV - _SC_2_FORT_DEV
- Określa, czy są wspierane użytki
zgodne z POSIX.2 służące do rozwijania oprogramowania
w Fortranie.
-
POSIX2_FORT_RUN - _SC_2_FORT_RUN
- Określa, czy są wspierane programy
użytkowe POSIX.2, służące do uruchamia
programów w Fortranie.
-
_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
- Określa, czy są wspierane użytki
zgodne z POSIX.2 służące do rozwijania
oprogramowania.
Poniższe wartości także istnieją, ale może
nie być ich w standardzie.
-
- _SC_PHYS_PAGES
- Liczba stron pamięci fizycznej. Proszę
zauważyć, że nie jest możliwe, aby iloczyn tej
wartości z _SC_PAGESIZE przekroczył (overflow)
dopuszczalny zakres wartości liczbowych.
-
- _SC_AVPHYS_PAGES
- Liczba obecnie dostępnych stron fizycznej
pamięci.
-
- _SC_NPROCESSORS_CONF
- The number of processors configured. See also
get_nprocs_conf(3).
-
- _SC_NPROCESSORS_ONLN
- The number of processors currently online (available). See
also 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 is invalid.
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
sysconf() |
Bezpieczeństwo wątkowe |
MT-Safe env |
POSIX.1-2001, POSIX.1-2008.
Użycie
ARG_MAX jest skomplikowane, ponieważ nie jest
określone, jak dużo przestrzeni argumentów funkcji
exec(3) jest zabierane przez zmienne środowiskowe
użytkownika.
Niektóre zwracane wartości mogą być duże; nie
są one odpowiednie do przydzielania pamięci.
bc(1),
expr(1),
getconf(1),
locale(1),
confstr(3),
fpathconf(3),
pathconf(3),
posixoptions(7)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Robert Luberda <
[email protected]> i Michał
Kułach <
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]