Exemples d'utilisation de la fonction sysctlbyname ()

Dans ce billet, nous allons voir comment afficher certaines informations obtenues avec la fonction sysctlbyname(3).

Exemple n°1

/sbin/sysctl vfs.usermount
vfs.usermount: 1

En C, on peut écrire un programme relativement simple (sysctl-01.c), qui va afficher uniquement le résultat.

gcc sysct-01.c -o sysctl-01 -Wall -W -lc
./sysctl-01
1

Exemple n°2

Si l'on souhaite afficher une chaîne de caractères.

/sbin/sysctl kern.ostype
kern.ostype: FreeBSD

Avec le programme sysctl-02.c, on procède de la manière suivante :

gcc sysct-02.c -o sysctl-02 -Wall -W -lc
./sysctl-02
FreeBSD

Exemple n°3

Maintenant, si plusieurs valeurs doivent être affichées.

/sbin/sysctl hw.acpi.supported_sleep_state
hw.acpi.supported_sleep_state: S3 S4 S5

Le programme sysctl-03.c affiche ces informations de cette manière :

gcc sysct-03.c -o sysctl-03 -Wall -W -lc
./sysctl-03
S3
S4
S5

Exemple n°4

Au lieu d'avoir une chaîne de caractères, on a une série d'entiers.

/sbin/sysctl kern.cp_times
kern.cp_times: 889624 1836 116735 3507 4424229

Le programme sysctl-04.c affiche tout ceci, de cette façon :

gcc sysct-04.c -o sysctl-04 -Wall -W -lc
./sysctl-04
Values: 889624 1836 116735 3507 4424229
Max: 4424229

Voilà, on peut désormais s'inspirer de ces exemples, pour apporter des patches aux programmes trop orientés Linux.