NAZWA¶
sysconf - pobieranie informacje o konfiguracji
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.
W czasie działania programu, można odpytać o wartości
liczbowe, używając opisywanej tutaj funkcji
sysconf().
Wartości liczbowe dotyczące systemu plików, w którym jest
umieszczony dany plik, można uzyskać, wywołując funkcje
fpathconf(3) i
pathconf(3). Wartości będące
łańcuchami znaków zwraca funkcja
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.
Dla opcji zazwyczaj istnieje stała
_POSIX_COŚ, która
może być zdefiniowana w
<unistd.h>. Jeżeli nie
jest zdefiniowana, można uzyskać jej wartość w czasie
działania programu. Jeżeli wartością jest -1, to dana
opcja nie jest wspierana w systemie. Wartość 0 oznacza, że
istnieją odpowiednie funkcje i pliki nagłówkowe, ale
należy sprawdzić w czasie działania, w jakim stopniu dana opcja
jest wspierana. Wartość inna niż -1 i 0 oznacza, że dana
opcja jest wspierana. Zazwyczaj wartości (takie jak 200112L)
oznaczają rok i miesiąc rewizji standardu POSIX opisującej
tę opcję. Dopóki odpowiedni standard POSIX opisujący
opcję nie zostanie opublikowany, glibc używa wartości 1, aby
zasygnalizować, że opcja jest wspierana. Odpowiednim argumentem
funkcji
sysconf() będzie
_SC_COŚ. Listę opcji
można znaleźć w
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).
- 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
- Rozmiar strony w bajtach. Nie może być mniejszy
niż 1. (Niektóre systemy używają zamiast tego
PAGE_SIZE).
- 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
- Określa maksymalną liczbę wag, które
można przypisać do wpisu słowa kluczowego LC_COLLATE
order w pliku definicji ustawień regionalnych.
- 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
- Określa, czy jest wspierane tworzenie ustawień
regionalnych POSIX.2 przez localedef(1) .
- 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_PAGE_SIZE przekroczył (overflow)
dopuszczalny zakres wartości liczbowych.
-
- _SC_AVPHYS_PAGES
- Liczba obecnie dostępnych stron fizycznej
pamięci.
-
- _SC_NPROCESSORS_CONF
- Liczba skonfigurowanych procesorów.
-
- _SC_NPROCESSORS_ONLN
- Liczba obecnie dostępnych procesorów.
WARTOŚĆ ZWRACANA¶
Jeżeli argument
name jest niepoprawny, to zwracane jest -1, a
errno jest ustawiane na
EINVAL. W przeciwnym wypadku
wartością zwracaną jest wartość zasobu systemowego, a
wartość
errno nie jest zmieniana. W przypadku opcji zwracana
jest wartość dodatnia, jeśli opcja jest dostępna, a -1,
jeśli nie jest. W przypadku limitów -1 oznacza, że limit nie
został określony.
ZGODNE Z¶
POSIX.1-2001.
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),
fpathconf(3),
pathconf(3),
posixoptions(7)
O STRONIE¶
Angielska wersja tej strony pochodzi z wydania 3.40 projektu Linux
man-pages. Opis projektu oraz informacje dotyczące zgłaszania
błędów można znaleźć pod adresem
http://www.kernel.org/doc/man-pages/.
TŁUMACZENIE¶
Autorem polskiego tłumaczenia niniejszej strony podręcznika man jest
Robert Luberda <robert@debian.org>.
Polskie tłumaczenie jest częścią projektu manpages-pl;
uwagi, pomoc, zgłaszanie błędów na stronie
http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją
3.40 oryginału.