Provided by:
manpages-de-dev_0.10-1_all 
BEZEICHNUNG
sysctl - Systemparameter lesen/schreiben
"UBERSICHT
#include <unistd.h>
#include <linux/sysctl.h>
int _sysctl(struct __sysctl_args *args);
BESCHREIBUNG
Verwenden Sie diesen Systemaufruf nicht! Siehe ANMERKUNGEN.
Der Aufruf _sysctl() liest und/oder schreibt Kernel-Parameter, zum
Beispiel den Rechnernamen oder die maximale Anzahl geoffneter Dateien.
Das Argument hat die Form
struct __sysctl_args {
int *name; /* Variable beschreibender Vektor aus Ganzzahlen */
int nlen; /* Lange dieses Vektors */
void *oldval; /* 0 oder Adresse, an der der alte Wert gespeichert
werden soll */
size_t *oldlenp; /* verfugbarer Platz fur den alten Wert, uberschrieben
durch die tatsachliche GroBe des alten Wertes */
void *newval; /* 0 oder Adresse des neuen Wertes */
size_t newlen; /* GroBe des neuen Wertes */
};
Dieser Aufruf sucht in einer Baumstruktur, die moglicherweise einer
Verzeichnisstruktur unter /proc/sys ahnelt, und ruft, wenn das
gewunschte Element gefunden wird, eine entsprechende Routine auf, um
den Wert zu lesen oder zu verandern.
R"UCKGABEWERT
Bei erfolgreichem Abschluss gibt _sysctl() 0 zuruck. Andernfalls wird
ein Wert von -1 zuruckgegeben und errno entsprechend gesetzt.
FEHLER
EFAULT Der Aufruf fragte nach dem vorherigen Wert durch Setzen von
oldval auf einen Wert ungleich NULL, stellte dafur aber keinen
Platz in oldlenp zur Verfugung.
ENOTDIR
name wurde nicht gefunden.
EPERM keine Suchrechte fur eines der vorgefundenen >>Verzeichnisse<<,
keine Leserechte, wenn oldval nicht null war oder keine
Schreibrechte, wenn newval nicht null war.
KONFORM ZU
Dieser Aufruf ist Linux-spezifisch und sollte nicht in portierbaren
Programmen benutzt werden. Einen sysctl()-Aufruf gibt es in Linux seit
Version 1.3.57. Er entstammt BSD-4.4. AusschlieBlich Linux hat das
Abbild /proc/sys und die Schemata der Objektbenennung unterscheiden
sich in Linux und 4.4BSD, aber die Deklaration der Funktion sysctl()
ist in beiden gleich.
ANMERKUNGEN
Glibc stellt keinen Wrapper fur diesen Systemaufruf bereit. Rufen Sie
ihn mittels syscall(2) auf.
Oder ... rufen Sie ihn besser gar nicht auf: Von der Benutzung dieses
Systemaufrufs wird seit langen abgeraten und er ist so unbeliebt, dass
er wahrscheinlich in einer k"unftigen Kernel-Version verschwinden wird.
Entfernen Sie ihn aus Ihren Programmen und benutzen Sie stattdessen die
Schnittstelle /proc/sys.
FEHLER
Die Objektnamen verandern sich zwischen Kernel-Versionen, was diesen
Systemaufruf fur Anwendungen wertlos macht.
Nicht alle verfugbaren Objekte sind richtig dokumentiert.
Es ist noch nicht moglich, das Betriebssystem durch Schreiben nach
/proc/sys/kernel/ostype zu andern.
BEISPIEL
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <linux/sysctl.h>
int _sysctl(struct __sysctl_args *args );
#define OSNAMESZ 100
int
main(void)
{
struct __sysctl_args args;
char osname[OSNAMESZ];
size_t osnamelth;
int name[] = { CTL_KERN, KERN_OSTYPE };
memset(&args, 0, sizeof(struct __sysctl_args));
args.name = name;
args.nlen = sizeof(name)/sizeof(name[0]);
args.oldval = osname;
args.oldlenp = &osnamelth;
osnamelth = sizeof(osname);
if (syscall(SYS__sysctl, &args) == -1) {
perror("_sysctl");
exit(EXIT_FAILURE);
}
printf("Auf dieser Maschine lauft %*s\n", osnamelth, osname);
exit(EXIT_SUCCESS);
}
SIEHE AUCH
proc(5)
KOLOPHON
Diese Seite ist Teil der Veroffentlichung 3.32 des Projekts
Linux-man-pages. Eine Beschreibung des Projekts und Informationen, wie
Fehler gemeldet werden konnen, finden sich unter
http://www.kernel.org/doc/man-pages/.
"UBERSETZUNG
Die deutsche Ubersetzung dieser Handbuchseite wurde von Chris Leick
<c.leick@vollbio.de> erstellt.
Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General
Public License Version 3 oder neuer bezuglich der Copyright-
Bedingungen. Es wird KEINE HAFTUNG ubernommen.
Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden,
schicken Sie bitte eine E-Mail an <debian-l10n-
german@lists.debian.org>.