BEZEICHNUNG

sysconf - Konfigurationsinformationen zur Laufzeit abfragen

BIBLIOTHEK

Standard-C-Bibliothek ( libc, -lc)

ÜBERSICHT

#include <unistd.h>
long sysconf(int name);

BESCHREIBUNG

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.

POSIX.1-Variablen

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.

POSIX.2-Variablen

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).

RÜCKGABEWERT

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.

FEHLER

EINVAL
name ist ungültig.

ATTRIBUTE

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
 

STANDARDS

POSIX.1-2001, POSIX.1-2008.

FEHLER

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.

SIEHE AUCH

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 <[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