Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
sysctl - Lire/ecrire les parametres systeme
SYNOPSIS
#include <unistd.h>
#include <linux/sysctl.h>
int _sysctl(struct __sysctl_args *args);
DESCRIPTION
N'utilisez pas cet appel syst`eme ! Consultez la section NOTES.
L'appel systeme _sysctl() lit et/ou ecrit les parametres du noyau. Par
exemple, le nom d'hote ou le nombre maximal de fichiers ouverts.
L'argument a la forme
struct __sysctl_args {
int *name; /* tableau d'entiers decrivant la variable */
int nlen; /* longueur de ce tableau */
void *oldval; /* 0 ou adresse ou stocker l'ancienne valeur */
size_t *oldlenp; /* espace disponible pour l'ancienne valeur,
remplace par la taille reelle 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
regroupee sous le repertoire /proc/sys, puis, si les valeurs reclamees
y sont trouvees, appelle les routines appropriees pour lire ou modifier
les valeurs.
VALEUR RENVOY'EE
_sysctl() renvoie 0 s'il reussit, et -1 s'il echoue auquel cas errno
contient le code d'erreur.
ERREURS
EFAULT Demande de lecture de la valeur precedente en fournissant oldval
non NULL, mais pas de place disponible dans oldlenp.
ENOTDIR
name non trouve.
EPERM Pas de droits de parcours sur l'un des << repertoires >>
rencontres, ou pas de permission de lecture avec oldval non nul,
ou encore pas de permission d'ecriture avec newval non nul.
CONFORMIT'E
Cet appel systeme est specifique a Linux et ne devrait pas etre employe
dans les programmes destines a etre portables. Un appel sysctl() est
present dans Linux depuis la version 1.3.57. Il existait dans BSD 4.4.
Seul Linux dispose du miroir /proc/sys et les conventions de noms
d'objets different entre Linux et BSD 4.4, mais les declarations de la
fonction sysctl() sont identiques sur les deux systemes.
NOTES
La glibc ne fournit pas de fonction autour de cet appel systeme ;
utilisez syscall(2) pour l'appeler.
Ou plutot... ne l'appelez pas : l'utilisation de cet appel systeme est
deconseillee depuis bien longtemps, et il est tellemnt indesirable
qu'il disparaitra bient^ot dans une prochaine version du noyau.
Supprimez-le des a present de vos programmes ; Utilisez l'interface
/proc/sys a la place.
BOGUES
Les noms des objets peuvent varier d'une version a l'autre du noyau, ce
qui rend cet appel systeme sans interet pour les applications.
Tous les objets disponibles ne sont pas correctement documentes.
Il n'est pas possible de changer de systeme d'exploitation en ecrivant
dans /proc/sys/kernel/ostype.
EXEMPLE
#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);
int
main(void)
{
if (syscall(SYS__sysctl, &args) == -1) {
perror("sysctl");
exit(EXIT_FAILURE);
}
printf("Cette machine fonctionne avec %*s\n", osnamelth, osname);
exit(EXIT_SUCCESS);
}
VOIR AUSSI
proc(5)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.