Votre IP: 38.107.179.241 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 27-03-2008 20:23:44

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]


SYSCTL

 

Index

  1. NOM
  2. SYNOPSIS
  3. DESCRIPTION
  4. EXEMPLE
  5. VALEUR RENVOYÉE
  6. ERREURS
  7. CONFORMITÉ
  8. BOGUES
  9. VOIR AUSSI
  10. TRADUCTION

 

NOMIndex

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

SYNOPSISIndex

#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);
 

DESCRIPTIONIndex

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.
 

EXEMPLEIndex

#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ÉEIndex

_sysctl() renvoie 0 s'il réussit, et -1 s'il échoue auquel cas errno contient le code d'erreur.  

ERREURSIndex

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ÉIndex

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.  

BOGUESIndex

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 AUSSIIndex

proc(5)  

TRADUCTIONIndex

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> ».


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS