Provided by: manpages-de-dev_0.10-1_all bug

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