Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]
SYSCTL
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- EXEMPLE
- VALEUR RENVOYÉE
- ERREURS
- CONFORMITÉ
- BOGUES
- VOIR AUSSI
- TRADUCTION
NOM
sysctl - Lire/écrire les paramètres système.
SYNOPSIS
#include <unistd.h>
#include <linux/unistd.h>
#include <linux/sysctl.h>
#include <errno.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args)
/* Il peut être préférable d'utiliser syscall(2) ; voir intro(2) */
int _sysctl(struct __sysctl_args *args);
DESCRIPTION
L'appel système _sysctl() lit et/ou écrit les paramètres du noyau. Par
exemple, le nom d'hôte ou le nombre maximum 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 regroupée
sous le répertoire /proc/sys, puis, si les valeurs réclamées y sont
trouvées, appelle les routines appropriées pour lire ou modifier les
valeurs.
EXEMPLE
#include <linux/unistd.h>
#include <linux/types.h>
#include <linux/sysctl.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args);
int sysctl(int *name, int nlen, void *oldval, size_t *oldlenp,
void *newval, size_t newlen)
{
struct __sysctl_args args={name,nlen,oldval,oldlenp,newval,newlen};
return _sysctl(&args);
}
#define SIZE(x) sizeof(x)/sizeof(x[0])
#define OSNAMESZ 100
char osname[OSNAMESZ];
int osnamelth;
int name[] = { CTL_KERN, KERN_OSTYPE };
main(){
osnamelth = SIZE(osname);
if (sysctl(name, SIZE(name), osname, &osnamelth, 0, 0))
perror("sysctl");
else
printf("Cette machine fonctionne avec %*s
", osnamelth, osname);
return 0;
}
VALEUR RENVOYÉE
_sysctl() renvoie 0 s'il réussit, et -1 s'il échoue auquel cas errno
contient le code d'erreur.
ERREURS
- EFAULT
-
Demande de lecture de la valeur précédente en fournissant oldval non
NULL, mais pas de place disponible dans oldlenp.
- ENOTDIR
-
name non trouvé.
- EPERM
-
pas de droits de parcours sur l'un des « répertoires » rencontrés, ou pas
de permission de lecture avec oldval non nul, ou encore pas de permission
d'écriture avec newval non nul.
CONFORMITÉ
Cet appel système est spécifique Linux et ne doit pas être employé dans les
programmes destinés à être portables. Un appel sysctl() est présent 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 diffèrent
entre Linux et BSD 4.4, mais les déclarations de la fonction sysctl(2)
sont identiques sur les deux systèmes.
BOGUES
Les noms des objets peuvent varier d'une version à l'autre du noyau. CET
APPEL SYSTÈME N'A AUCUN INTÉRÊT POUR LES APPLICATIONS. Utilisez l'interface
/proc/sys à la place.
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.
VOIR AUSSI
proc(5)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|