NAZWA

sysconf - pobieranie informacje o konfiguracji w trakcie uruchomienia

BIBLIOTEKA

Standardowa biblioteka C ( libc, -lc)

SKŁADNIA

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

OPIS

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

Zmienne POSIX.1

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.

Zmienne POSIX.2

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

WARTOŚĆ ZWRACANA

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.

BŁĘDY

EINVAL
name is invalid.

ATRYBUTY

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
 

STANDARDY

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

BŁĘDY

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.

ZOBACZ TAKŻE

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

TŁUMACZENIE

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]