sysconf(3) Library Functions Manual sysconf(3) NAZWA sysconf - pobiera informacje o konfiguracji w trakcie uruchomienia BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include long sysconf(int name); OPIS POSIX pozwala testowac w czasie kompilowania aplikacji lub w czasie jej dzialania, czy pewne opcje sa wspierane lub jakie sa wartosci pewnych konfigurowalnych stalych lub limitow. W czasie kompilacji jest to robione przez zainkludowanie lub i testowanie wartosci pewnych makr. W czasie dzialania programu, mozna odpytac o wartosci liczbowe, uzywajac opisywanej tutaj funkcji sysconf(). Wartosci liczbowe dotyczace systemu plikow, w ktorym jest umieszczony dany plik, mozna uzyskac za pomoca fpathconf(3) i pathconf(3). Wartosci bedace lancuchami znakow zwraca funkcja confstr(3). Wartosci zwracane przez powyzsze funkcje sa stalymi dotyczacymi konfiguracji systemu, ktore nie zmienia sie przez caly czas zycia procesu. Dla opcji zazwyczaj istnieje stala _POSIX_COS, ktora moze byc zdefiniowana w . Jezeli nie jest zdefiniowana, mozna uzyskac jej wartosc w czasie dzialania programu. Jezeli wartoscia jest -1, to dana opcja nie jest wspierana w systemie. Wartosc 0 oznacza, ze istnieja odpowiednie funkcje i pliki naglowkowe, ale nalezy sprawdzic w czasie dzialania, w jakim stopniu dana opcja jest wspierana. Wartosc inna niz -1 i 0 oznacza, ze dana opcja jest wspierana. Zazwyczaj wartosci (takie jak 200112L) oznaczaja rok i miesiac rewizji standardu POSIX opisujacej te opcje. Dopoki odpowiedni standard POSIX opisujacy opcje nie zostanie opublikowany, glibc uzywa wartosci 1, aby zasygnalizowac, ze opcja jest wspierana. Odpowiednim argumentem funkcji sysconf() bedzie _SC_COS. Liste opcji mozna znalezc w posixoptions(7). Dla zmiennych lub limitow zazwyczaj istnieje stala _COS definiowana w lub _POSIX_COS definiowana w . Stala nie bedzie zdefiniowana, jezeli limit nie jest okreslony. Jezeli stala jest zdefiniowana, to okresla gwarantowany limit, ale w rzeczywistosci moze byc wspierana wartosc wieksza niz wynosi wartosc tej stalej. Jesli aplikacja chce zrobic uzytek ze zmiennych, ktorych wartosci moga sie roznic w zaleznosci od systemu, moze wywolac funkcje sysconf(). Argumentem funkcji sysconf() bedzie _SC_COS. Zmienne POSIX.1 W tabeli ponizej podajemy nazwe zmiennej, nazwe argumentu funkcji sysconf(), uzywanego do odpytania o jej wartosc, oraz krotki opis. Najpierw wartosci zgodne z POSIX.1. ARG_MAX - _SC_ARG_MAX Maksymalna dlugosc argumentow funkcji z rodziny exec(3). Nie moze byc mniejsza niz _POSIX_ARG_MAX (4096). CHILD_MAX - _SC_CHILD_MAX Maksymalna liczba rownoczesnych procesow jednego uzytkownika. Nie moze byc mniejsza niz _POSIX_CHILD_MAX (25). HOST_NAME_MAX - _SC_HOST_NAME_MAX Maksymalna dlugosc nazwy komputera, pomijajac koncowy bajt NULL, zwracana przez gethostname(2). Nie moze byc mniejsza niz _POSIX_HOST_NAME_MAX (255). LOGIN_NAME_MAX - _SC_LOGIN_NAME_MAX Maksymalna dlugosc nazwy uzytkownika, lacznie z koncowym znakiem NULL. Nie moze byc mniejsza niz _POSIX_LOGIN_NAME_MAX (9). NGROUPS_MAX - _SC_NGROUPS_MAX Maksymalna liczba identyfikatorow dodatkowych grup. tykniecia zegara - _SC_CLK_TCK Liczba tykniec zegara na sekunde. Odpowiadajaca jej zmienna jest przestarzala, a byla oczywiscie nazwana CLK_TCK. (Uwaga: makro CLOCKS_PER_SEC nie dostarcza informacji: jego wartosc musi byc rowna 1000000). OPEN_MAX - _SC_OPEN_MAX Maksymalna liczba plikow, ktore proces moze miec otwarte w dowolnym czasie. Nie moze byc mniejsza niz _POSIX_OPEN_MAX (20). PAGESIZE - _SC_PAGESIZE Rozmiar strony w bajtach. Nie moze byc mniejszy niz 1. PAGE_SIZE - _SC_PAGE_SIZE Synonim PAGESIZE/_SC_PAGESIZE (POSIX okresla i PAGESIZE, i PAGE_SIZE). RE_DUP_MAX - _SC_RE_DUP_MAX Liczba powtorzonych wystapien BRE dopuszczalnych w regexec(3) i regcomp(3). Nie moze byc mniejsza niz _POSIX2_RE_DUP_MAX (255). STREAM_MAX - _SC_STREAM_MAX Maksymalna liczba strumieni, ktora proces moze otworzyc w dowolnym czasie. Jesli jest zdefiniowana, to ma taka sama wartosc jak standardowe makro FOPEN_MAX w C. Nie moze byc mniejsza niz _POSIX_STREAM_MAX (8). SYMLOOP_MAX - _SC_SYMLOOP_MAX Maksymalna liczba dowiazan symbolicznych w sciezce nie powodujaca zwrocenia bledu ELOOP. Nie moze byc mniejsza niz _POSIX_SYMLOOP_MAX (8). TTY_NAME_MAX - _SC_TTY_NAME_MAX Maksymalna dlugosc nazwy urzadzenia terminalowego, wlaczajac koncowy znak NULL. Nie moze byc mniejsza niz _POSIX_TTY_NAME_MAX (9). TZNAME_MAX - _SC_TZNAME_MAX Maksymalna liczba bajtow w nazwie strefy czasowej. Nie moze byc mniejsza niz _POSIX_TZNAME_MAX (6). _POSIX_VERSION - _SC_VERSION Okresla rok i miesiac, w formacie YYYYMML, w ktorym zostal zaakceptowany standard POSIX.1. Na przyklad wartosc 199009L oznacza wersje standardu z wrzesnia 1990 roku. Zmienne POSIX.2 Nastepnie podajemy wartosci POSIX.2 okreslajace limity dla programow uzytkowych. BC_BASE_MAX - _SC_BC_BASE_MAX Okresla maksymalna wartosc obase akceptowana przez program uzytkowy bc(1). BC_DIM_MAX - _SC_BC_DIM_MAX Okresla maksymalna dopuszczalna liczbe elementow w tabelach w programie bc(1). BC_SCALE_MAX - _SC_BC_SCALE_MAX Okresla maksymalna wartosc scale akceptowana przez program uzytkowy bc(1). BC_STRING_MAX - _SC_BC_STRING_MAX Okresla maksymalna dlugosc lancucha znakow akceptowanego przez bc(1). COLL_WEIGHTS_MAX - _SC_COLL_WEIGHTS_MAX Okresla maksymalna liczbe wag, ktore mozna przypisac do wpisu slowa kluczowego LC_COLLATE order w pliku definicji ustawien regionalnych (locale). EXPR_NEST_MAX - _SC_EXPR_NEST_MAX Okresla maksymalna liczbe wyrazen zagniezdzonych w nawiasach, akceptowana przez program expr(1). LINE_MAX - _SC_LINE_MAX Maksymalna dlugosc linii wejsciowej (lacznie ze znakiem konca linii) programu uzytkowego pochodzacej albo ze standardowego wejscia, albo z pliku. RE_DUP_MAX - _SC_RE_DUP_MAX Maksymalna liczna powtorzonych wystapien wyrazenia regularnego, jezeli jest uzywana notacja \{m,n\}. POSIX2_VERSION - _SC_2_VERSION Okresla wersje standardu POSIX.2 w formacie YYYYMML. POSIX2_C_DEV - _SC_2_C_DEV Okresla, czy sa wspierane uzytki zgodne z POSIX.2 sluzace do rozwijania oprogramowania w jezyku C. POSIX2_FORT_DEV - _SC_2_FORT_DEV Okresla, czy sa wspierane uzytki zgodne z POSIX.2 sluzace do rozwijania oprogramowania w Fortranie. POSIX2_FORT_RUN - _SC_2_FORT_RUN Okresla, czy sa wspierane programy uzytkowe POSIX.2, sluzace do uruchamia programow w Fortranie. _POSIX2_LOCALEDEF - _SC_2_LOCALEDEF Okresla, czy jest wspierane tworzenie ustawien regionalnych POSIX.2 przez localedef(1) . POSIX2_SW_DEV - _SC_2_SW_DEV Okresla, czy sa wspierane uzytki zgodne z POSIX.2 sluzace do rozwijania oprogramowania. Ponizsze wartosci takze istnieja, ale moze nie byc ich w standardzie. - _SC_PHYS_PAGES Liczba stron pamieci fizycznej. Prosze zauwazyc, ze nie jest mozliwe, aby iloczyn tej wartosci z _SC_PAGESIZE przekroczyl (overflow) dopuszczalny zakres wartosci liczbowych. - _SC_AVPHYS_PAGES Liczba obecnie dostepnych stron fizycznej pamieci. - _SC_NPROCESSORS_CONF Liczba skonfigurowanych procesorow. Zob. tez get_nprocs_conf(3). - _SC_NPROCESSORS_ONLN Liczba obecnie dostepnych procesorow. Zob. tez get_nprocs_conf(3). WARTOSC ZWRACANA Zwracana wartoscia sysconf() jest jedna z ponizszych: o W razie wystapienia bledu zwracane jest -1 i ustawiane errno wskazujac blad (na przyklad na EINVAL wskazujace, ze name jest niepoprawna). o Jesli name odpowiada jakiemus ograniczeniu typu maksimum lub minimum, ale nie mozna okreslic wartosci tego ograniczenia, to zwracane jest -1 bez zmieniana wartosci errno. (W celu odroznienia nieokreslalnego ograniczenia od innego bledu, nalezy ustawic errno na zero przed wywolaniem tej funcji, i nastepnie sprawdzic, czy errno jest niezerowe, jesli funkcja zwroci wartosc -1). o Jesli name odpowiada jakiejs nazwie opcji, to zwracana jest wartosc dodatnia, gdy ta opcja jest wspierana, w przeciwnym wypadku zwracane jest -1. o W przeciwnym wypadku zwracana jest biezaca wartosc opcji lub ograniczenia. Wartosc ta nie bedzie bardziej restrykcyjna niz odpowiednia wartosc dostepna w pliku lub w czasie kompilowania aplikacji. BLEDY EINVAL name jest niepoprawne. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +-----------------------+--------------------------+-------------------+ |Interfejs | Atrybut | Wartosc | +-----------------------+--------------------------+-------------------+ |sysconf() | Bezpieczenstwo watkowe | MT-bezpieczne env | +-----------------------+--------------------------+-------------------+ STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001. USTERKI Uzycie ARG_MAX jest skomplikowane, poniewaz nie jest okreslone, jak duzo przestrzeni argumentow funkcji exec(3) jest zabierane przez zmienne srodowiskowe uzytkownika. Niektore ze zwracanych wartosci moga byc olbrzymie, wiec nie nadaja sie do alokowania pamieci. ZOBACZ TAKZE bc(1), expr(1), getconf(1), locale(1), confstr(3), fpathconf(3), pathconf(3), posixoptions(7) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.15 17 maja 2025 r. sysconf(3)