Quels sont les arguments de sysctl ()?

J’ai vérifié les pages de manuel et la documentation, mais ils ne traitent que de l’appel de ligne de commande. Je parle de la fonction C. Deux questions à ce sujet:

  • Quels sont les arguments de sysctl () dans C? (Je veux juste une description générale de ce qu’est chaque argument et à quoi il sert)
  • L’appel sysctl () est-il toujours valide dans Mac OS X Lion?

Je suis sur Mac OS X Snow Leopard en utilisant Xcode 3.2.6

Eh bien, en citant cette page , en supposant qu’il a le prototype:

 int sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, void *newval, size_t newlen); 

alors les parameters seraient les suivants:

  • name -> pointe vers un tableau d’entiers: chacune des valeurs d’entier identifie un élément sysctl, soit un répertoire, soit un fichier de nœud feuille. Les noms symboliques de ces valeurs sont définis dans .
  • nlen -> indique combien de nombres entiers sont listés dans le nom du tableau: pour atteindre une entrée particulière, vous devez spécifier le chemin à travers les sous-répertoires, vous devez donc indiquer la longueur de ce chemin.
  • oldval -> est un pointeur sur un tampon de données où l’ancienne valeur de l’élément sysctl doit être stockée. S’il est NULL, l’appel système ne renverra pas de valeurs dans l’espace utilisateur.
  • oldlenp -> pointe vers un nombre entier indiquant la longueur du tampon oldval. L’appel système change la valeur pour refléter la quantité de données écrites, qui peut être inférieure à la longueur de la mémoire tampon.
  • newval -> pointe vers un tampon de données hébergeant des données de remplacement: le kernel lit ce tampon pour modifier l’entrée de sysctl sur laquelle il agit. Si c’est NULL, la valeur du kernel n’est pas modifiée.
  • newlen -> est la longueur de newval. Le kernel ne lira pas plus de newlen octets de newval.

Je vous recommande de lire cette page entière, car elle fournit des détails plus détaillés. Et quant à sa validité sous Mac OS X Lion, je ne suis pas sûr, mais j’imagine.

J’espère que j’ai aidé!