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.
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.
Autorami polskiego tłumaczenia niniejszej strony
podręcznika są: Robert Luberda <robert@debian.org> i
Michał Kułach <michal.kulach@gmail.com>
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
manpages-pl-list@lists.sourceforge.net.