NAZWA¶
sysconf - pobieranie informacje o konfiguracji w trakcie uruchomienia
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_PAGESIZE 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),
confstr(3),
fpathconf(3),
pathconf(3),
posixoptions(7)
O STRONIE¶
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux
man-pages. Opis projektu, informacje dotyczące zgłaszania
błędów, oraz najnowszą wersję
oryginału można znaleźć pod adresem
http://www.kernel.org/doc/man-pages/.
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika man
są: Robert Luberda <robert@debian.org> i Michał
Kułach <michal.kulach@gmail.com>.
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.71 oryginału.