Man page - _sysctl(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro de

Manual

sysctl

NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
NOTES
BOGUES
EXEMPLES
VOIR AUSSI
TRADUCTION

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 .