Dans ce billet, nous allons voir comment afficher certaines informations obtenues avec la fonction [sysctlbyname(3)|http://www.freebsd.org/cgi/man.cgi?query=sysctl&sektion=3&manpath=FreeBSD+10.0-RELEASE].

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