Linux |
CentOS 5.3 |
|
![]() |
sysctl(2) |
![]() |
|
sysctl − Lire/écrire les paramètres système. |
#include <unistd.h>
#include <linux/unistd.h>
#include <linux/sysctl.h>
#include <errno.h>
_syscall1(int, _sysctl, struct __sysctl_args *, args)
/* L’utilisation de syscall(2) est préférable ; voir intro(2) */
int _sysctl(struct __sysctl_args *args);
|
|
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; /* integer vector describing variable */
int nlen; /* length of this vector */
void *oldval; /* 0 or address where to store old value */
size_t *oldlenp; /* available room for old value,
overwritten by actual size of old value */
void *newval; /* 0 or address of new value */
size_t newlen; /* size of new value */
};
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. |
#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\n", osnamelth, osname);
return 0;
}
|
|
_sysctl() renvoie 0 s’il réussit, et −1 s’il échoue auquel cas errno contient le code d’erreur. |
|
EFAULT |
Demande de lecture de la valeur précédente en fournissant oldval non NULL, mais pas de place disponible dans |
|
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. oldlenp. |
|
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. |
|
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. |
|
proc(5) |
|
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 15 octobre 1996 et révisée le 25 juillet 2006. L’équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=en man 2 sysctl ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. |
![]() |
sysctl(2) | ![]() |