sysconf - Konfigurationsinformationen zur Laufzeit abfragen
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT
#include <unistd.h>
long sysconf(int name);
POSIX erlaubt es einer Anwendung zur Kompilier- oder Laufzeit zu
testen, ob bestimmte Optionen unterstützt werden oder wie der Wert
bestimmter konfigurierbarer Konstanten oder Beschränkungen ist.
Zur Kompilierzeit wird dies durch Einbinden von
<unistd.h> und/oder <limits.h> und Testen des
Wertes durch bestimmte Makros erledigt.
Zur Laufzeit können numerische Werte durch die vorhandene
Funktion sysconf() abgefragt werden. Vom Dateisystem, auf dem sich
eine Datei befindet, abhängige Werte können mittels
fpathconf(3) und pathconf(3) abgefragt werden.
Zeichenkettenwerte können mittels confstr(3) abgefragt
werden.
Die Werte, die diese Funktionen zurückgeben, sind
Systemkonfigurations-Konstanten. Sie ändern sich während der
Lebensdauer eines Prozesses nicht.
Für jede optionale Funktionalität gibt es
typischerweise eine Konstante _POSIX_FOO, die in
<unistd.h> definiert würde. Wenn sie nicht definiert
ist, sollte zur Laufzeit nachgefragt werden. Wenn sie als -1 definiert ist,
wird die Funktionalität nicht unterstützt. Wenn sie als 0
definiert ist, existieren die notwendigen Funktionen und Header, aber es
muss zur Laufzeit nachgefragt werden, wie weit die Option unterstützt
wird. Wenn sie definiert und nicht 0 oder -1 ist, wird die Option
unterstützt. Üblicherweise gibt der Wert (z.B. 200112L) das
Jahr und den Monat der POSIX-Überarbeitung an, die diese Option
hinzufügte. Glibc benutzt dem Wert 1, um die Unterstützung
anzuzeigen, solange die POSIX-Überarbeitung noch nicht
veröffentlicht wurde. Das sysconf()-Argument wird
_SC_FOO sein. Eine Liste der Optionen finden die unter
posixoptions(7).
Für Variablen oder Begrenzungen gibt es typischerweise eine
Konstante _FOO, die in <limits.h> definiert
würde, oder _POSIX_FOO, die möglicherweise in
<unistd.h> definiert wurde. Die Konstante ist nicht definiert,
wenn keine Begrenzung angegeben wurde. Falls die Konstante definiert ist,
gibt es einen garantierten Wert, es könnte aber tatsächlich
ein größerer unterstützt werden. Falls eine Anwendung
Werte nutzen möchte, die sich zwischen Systemen ändern
könnten, kann sysconf() aufgerufen werden. Das
sysconf()-Argument wird _SC_FOO sein.
Es werden der Name der Variable, der Name des
sysconf()-Arguments, das zum Abfragen ihres Wertes benutzt wird und
eine kurze Beschreibung angegeben.
Zuerst die POSIX.1-kompatiblen Werte:
- ARG_MAX -
_SC_ARG_MAX
- die maximale Länge von Argumenten für die Funktionsfamilie
exec(3). Darf nicht weniger als _POSIX_ARG_MAX (4096)
sein.
- CHILD_MAX -
_SC_CHILD_MAX
- die maximale Anzahl von simultanen Prozessen pro Benutzerkennung. Muss
mindestens _POSIX_CHILD_MAX (25) sein.
- HOST_NAME_MAX
- _SC_HOST_NAME_MAX
- maximale Länge des Rechnernamens, ausschließlich des
abschließenden Nullbytes, wie er von gethostname(2)
zurückgegeben wird. Muss mindestens _POSIX_HOST_NAME_MAX
(255) sein.
- LOGIN_NAME_MAX
- _SC_LOGIN_NAME_MAX
- maximale Länge des Anmeldenamens, einschließlich des
abschließenden Nullbytes. Muss mindestens
_POSIX_LOGIN_NAME_MAX (9) sein.
- NGROUPS_MAX
- _SC_NGROUPS_MAX
- maximale Anzahl zusätzlicher Gruppenkennungen.
- Takte -
_SC_CLK_TCK
- die Anzahl der Takte pro Sekunde. Die zugehörige Variable ist
veraltet. Sie wurde sicherlich CLK_TCK genannt. (Beachten Sie: Das
Makro CLOCKS_PER_SEC gibt keinen Hinweis. Es muss 1000000
sein.)
- OPEN_MAX -
_SC_OPEN_MAX
- die maximale Anzahl von Dateien, die ein Prozess gleichzeitig
geöffnet haben kann. Muss mindestens _POSIX_OPEN_MAX (20)
sein.
- PAGESIZE -
_SC_PAGESIZE
- Größe einer Seite in Byte. Muss mindestens 1 sein.
- PAGE_SIZE -
_SC_PAGE_SIZE
- Ein Synonym für PAGESIZE/_SC_PAGESIZE. (Sowohl
PAGESIZE als auch PAGE_SIZE sind in POSIX
spezifiziert.)
- RE_DUP_MAX
- _SC_RE_DUP_MAX
- maximale von regexec(3) und regcomp(3) erlaubte
Wiederholungsanzahl in einem gewöhnlichen regulären
Ausdruck. Muss mindestens _POSIX2_RE_DUP_MAX (255) sein.
- STREAM_MAX
- _SC_STREAM_MAX
- die maximale Anzahl von Datenströmen, die ein Prozess gleichzeitig
geöffnet haben kann. Falls es definiert ist, hat es den gleichen
Wert wie das Standard-C-Makro FOPEN_MAX. Muss mindestens
_POSIX_STREAM_MAX (8) sein.
- SYMLOOP_MAX
- _SC_SYMLOOP_MAX
- die maximale Anzahl symbolischer Links an, bevor die Auflösung
eines Pfadnamens ELOOP zurückgibt. Muss mindestens
_POSIX_SYMLOOP_MAX (8) sein.
- TTY_NAME_MAX
- _SC_TTY_NAME_MAX
- die maximale Länge von Terminal-Gerätenamen
einschließlich des abschließenden Nullbytes. Muss mindestens
_POSIX_TTY_NAME_MAX (9) sein.
- TZNAME_MAX
- _SC_TZNAME_MAX
- die maximale Anzahl von Bytes eines Zeitzonennamens. Muss mindestens
_POSIX_TZNAME_MAX (6) sein.
- _POSIX_VERSION - _SC_VERSION
- zeigt Jahr und Monat, zu dem der Standard POSIX.1 festgesetzt wurde, im
Format YYYYMML an; der Wert 199009L zeigt die
Überarbeitung vom September 1990 an.
Als nächstes die POSIX.2-Werte, die Begrenzungen für
Hilfswerkzeuge angeben:
- BC_BASE_MAX
- _SC_BC_BASE_MAX
- zeigt den maximalen Wert für obase an, der von dem
Hilfsprogramm bc(1) akzeptiert wird.
- BC_DIM_MAX
- _SC_BC_DIM_MAX
- zeigt den maximalen Wert von Elementen an, die in einem Feld von
bc(1) zugelassen sind.
- BC_SCALE_MAX
- _SC_BC_SCALE_MAX
- zeigt den maximalen Wert für scale an, der für
bc(1) erlaubt ist.
- BC_STRING_MAX
- _SC_BC_STRING_MAX
- zeigt die maximale Länge einer Zeichenkette an, die von
bc(1) akzeptiert wird.
- COLL_WEIGHTS_MAX
- _SC_COLL_WEIGHTS_MAX
- zeigt die maximale Anzahl von Gewichtungen, die einem Eintrag des
Schlüsselworts LC_COLLATE order in der
Locale-Definitionsdatei zugewiesen werden können.
- EXPR_NEST_MAX
- _SC_EXPR_NEST_MAX
- ist die maximale Anzahl von Ausdrücken, die bei expr(1)
durch Klammern eingeschlossen werden dürfen.
- LINE_MAX -
_SC_LINE_MAX
- die maximale Länge der Eingabezeile eines Hilfsprogramms, entweder
von der Standardeingabe oder aus einer Datei. Dies schließt den
Platz für einen folgenden Zeilenumbruch ein.
- RE_DUP_MAX
- _SC_RE_DUP_MAX
- die maximale Anzahl wiederholten Auftretens von regulären
Ausdrücken, wenn Intervallschreibweise \{m,n\} benutzt
wird.
- POSIX2_VERSION
- _SC_2_VERSION
- zeigt die Version des Standards POSIX.2 im Format YYYYMML an.
- POSIX2_C_DEV
- _SC_2_C_DEV
- zeigt an, ob die POSIX.2-C-Sprachentwicklungseinrichtungen
unterstützt werden.
- POSIX2_FORT_DEV
- _SC_2_FORT_DEV
- zeigt an, ob die POSIX.2-FORTRAN-Entwicklungshilfsprogramme
unterstützt werden.
- POSIX2_FORT_RUN
- _SC_2_FORT_RUN
- zeigt an, ob die POSIX.2-FORTRAN-Laufzeithilfsprogramme unterstützt
werden.
- _POSIX2_LOCALEDEF - _SC_2_LOCALEDEF
- zeigt an, ob die POSIX.2-Erzeugung von Locales mittels localedef(1)
unterstützt wird.
- POSIX2_SW_DEV
- _SC_2_SW_DEV
- zeigt an, ob die POSIX.2-Softwareentwicklungs-Hilfsprogrammoption
unterstützt wird.
Diese Werte existieren auch, sind möglicherweise aber kein
Standard:
- _SC_PHYS_PAGES
- die Anzahl physischer Speicherseiten. Beachten Sie, dass es möglich
ist, dass das Produkt dieses Wertes und des Werts von _SC_PAGESIZE
überlaufen kann.
-
- _SC_AVPHYS_PAGES
- die Anzahl derzeit verfügbarer physischer Speicherseiten.
-
- _SC_NPROCESSORS_CONF
- die Anzahl konfigurierter Prozessoren. Siehe auch
get_nprocs_conf(3).
-
- _SC_NPROCESSORS_ONLN
- die Anzahl der Prozessoren, die derzeit online (verfügbar) sind.
Siehe auch get_nprocs_conf(3).
Der Rückgabewert von sysconf() ist einer der
Folgenden:
- •
- Bei Fehlern wird -1 zurückgeliefert und errno gesetzt, um
den Fehler anzuzeigen (beispielsweise EINVAL, um anzuzeigen, dass
der name ungültig ist).
- •
- Falls name einer Maximal- oder Minimalgrenze entspricht und diese
Grenze unbestimmt ist, wird -1 zurückgeliefert und errno
nicht geändert. (Um eine unbestimmte Grenze von einem Fehler zu
unterscheiden, setzen Sie errno vor dem Aufruf auf Null und
prüfen dann, ob errno von Null verschieden ist, wenn -1
zurückgeliefert wird.)
- •
- Falls name einer Option entspricht, wird ein positiver Wert
zurückgeliefert, falls die Option unterstützt wird und -1,
falls die Option nicht unterstützt wird.
- •
- Andernfalls wird der aktuelle Wert der Option oder Grenze
zurückgeliefert. Dieser Wert ist nicht eingeschränkter als
der entsprechende Wert, der der Anwendung in <unistd.h> oder
<limits.h> beschrieben wurde, als die Anwendung
übersetzt wurde.
Siehe attributes(7) für eine Erläuterung der
in diesem Abschnitt verwandten Ausdrücke.
Schnittstelle |
Attribut |
Wert |
sysconf() |
Multithread-Fähigkeit |
MT-Safe env |
POSIX.1-2001, POSIX.1-2008.
Es ist schwierig ARG_MAX zu benutzen, da unbekannt ist, wie
viel des Argumentbereichs für exec(3) von den
Umgebungsvariablen des Benutzers belegt wird.
Einige zurückgegebene Werte könnten riesig sein; sie
sind nicht geeignet, um Speicher zu reservieren.
bc(1), expr(1), getconf(1), locale(1),
confstr(3), fpathconf(3), pathconf(3),
posixoptions(7)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von
Patrick Rother <krd@gulu.net>, Chris Leick <c.leick@vollbio.de>
und Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU General
Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite
finden, schicken Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer.