sysconf - Konfigurationsinformationen zur Laufzeit abfragen
Standard-C-Bibliothek (
libc,
-lc)
#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.
- EINVAL
-
name ist ungültig.
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)
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother
<
[email protected]>, Chris Leick <
[email protected]> und Helge
Kreutzmann <
[email protected]> 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