Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

       sysctl - Lire/écrire les paramètres système

SYNOPSIS

       #include <unistd.h>
       #include <linux/sysctl.h>

       [[obsolète]] int _sysctl(struct __sysctl_args *args);

DESCRIPTION

       Cet appel système n'existe plus dans les noyaux actuels ! Consultez NOTES.

       L'appel  système  _sysctl()  lit  et/ou  écrit  les paramètres du noyau. Par exemple, le nom d'hôte ou le
       nombre maximal de fichiers ouverts. L'argument a la forme

           struct __sysctl_args {
               int    *name;    /* tableau d'entiers décrivant la variable */
               int     nlen;    /* longueur de ce tableau */
               void   *oldval;  /* 0 ou adresse où stocker l'ancienne valeur */
               size_t *oldlenp; /* espace disponible pour l'ancienne valeur,
                                   remplacé par la taille réelle de cette valeur */
               void   *newval;  /* 0 ou adresse de la nouvelle valeur */
               size_t  newlen;  /* taille de la nouvelle valeur */
           };

       Cet appel effectue une recherche dans la structure arborescente, sans doute de type arbre de  répertoires
       sous  /proc/sys,  puis,  si  les valeurs réclamées y sont trouvées, appelle les routines appropriées pour
       lire ou modifier les valeurs.

VALEUR RENVOYÉE

       _sysctl() renvoie 0 s'il réussit. Autrement, une valeur de -1 est  renvoyée  et  errno  est  défini  pour
       indiquer l'erreur.

ERREURS

       EACCES
       EPERM  Pas  de droit de parcours sur l'un des « répertoires » rencontrés, ou pas de permission de lecture
              où oldval était non nul, ou encore pas de permission d'écriture où newval était non nul.

       EFAULT Demande de lecture de la valeur précédente en fournissant oldval  non  NULL,  mais  pas  de  place
              allouée dans oldlenp.

       ENOTDIR
              name non trouvé.

STANDARDS

       Linux.

HISTORIQUE

       Linux 1.3.57. Supprimé dans Linux 5.5, glibc 2.32.

       Il  existait  dans  4.4BSD.  Seul  Linux  dispose du miroir /proc/sys et les conventions de noms d'objets
       diffèrent entre Linux et 4.4BSD, mais les déclarations de la fonction sysctl() sont  identiques  sur  les
       deux systèmes.

NOTES

       L'utilisation  de  cet  appel  système  est  déconseillée  depuis  longtemps  :  depuis Linux 2.6.24, son
       utilisation provoque des avertissements dans le journal du noyau, et depuis Linux 5.5,  il  a  finalement
       été supprimé. Utilisez plutôt l'interface /proc/sys.

       Veuillez  noter que sur les anciens noyaux où cet appel système existe encore, il n'est disponible que si
       le noyau a été configuré avec l'option CONFIG_SYSCTL_SYSCALL.  En  outre,  la  glibc  ne  founit  pas  de
       fonction d'enveloppe pour cet appel système, imposant l'utilisation de syscall(2).

BOGUES

       Les  noms  des objets peuvent varier d'une version à l'autre du noyau, ce qui rend cet appel système sans
       intérêt pour les applications.

       Tous les objets disponibles ne sont pas correctement documentés.

       Il n'est pas possible de changer de système d'exploitation en écrivant dans /proc/sys/kernel/ostype.

EXEMPLES

       #define _GNU_SOURCE
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>
       #include <sys/syscall.h>
       #include <unistd.h>

       #include <linux/sysctl.h>

       #define ARRAY_SIZE(arr)  (sizeof(arr) / sizeof((arr)[0]))

       int _sysctl(struct __sysctl_args *args);

       #define OSNAMESZ 100

       int
       main(void)
       {
           int                   name[] = { CTL_KERN, KERN_OSTYPE };
           char                  osname[OSNAMESZ];
           size_t                osnamelth;
           struct __sysctl_args  args;

           memset(&args, 0, sizeof(args));
           args.name = name;
           args.nlen = ARRAY_SIZE(name);
           args.oldval = osname;
           args.oldlenp = &osnamelth;

           osnamelth = sizeof(osname);

           if (syscall(SYS__sysctl, &args) == -1) {
               perror("_sysctl");
               exit(EXIT_FAILURE);
           }
           printf("Cette machine fonctionne avec %*s\n", (int) osnamelth, osname);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       proc(5)

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier    <barbier@debian.org>,    David     Prévot
       <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                    15 juin 2024                                         sysctl(2)