POSIX permet à une application de tester à la compilation
ou à l'exécution si certaines options sont gérées ou de déterminer
quelles sont les valeurs de certaines limites ou constantes configurables.
Ceci est fait à la compilation en incluant
<unistd.h>
et/ou
<limits.h>
et en testant la valeur de certaines macros.
Pendant l'exécution, vous pouvez obtenir les valeurs numériques
en utilisant la fonction
sysconf().
Vous pouvez obtenir les valeurs numériques, qui peuvent dépendre
du système de fichiers, relatives à un fichier en utilisant les appels
fpathconf(3)
et
pathconf(3).
Vous pouvez obtenir les valeurs de chaînes en utilisant
confstr(3).
Les valeurs obtenues à partir de ces fonctions sont
des constantes de configuration du système.
Elles ne seront donc pas modifiées pendant la durée de vie d'un processus.
Pour les options, il y a typiquement une constante symbolique
_POSIX_FOO
qui peut être définie dans
<unistd.h>.
Si elle n'est pas définie, vous pouvez poser la question à l'exécution.
Si elle est définie à -1, c'est que l'option n'est pas supportée.
Si elle est définie à 0, les entêtes et les fonctions en rapport existent
mais vous devrez demander pendant l'exécution quel degré de support
est disponible.
Si elle est définie à une autre valeur que -1 ou 0,
l'option est supportée.
Habituellement, la valeur (comme par exemple 200112L) indique l'année
et le mois de la révision POSIX qui décrit l'option.
La glibc utilise la valeur 1 pour indiquer le support aussi longtemps
que la révision POSIX n'a pas été publiée.
L'argument de
sysconf()
sera
_SC_FOO.
Pour la liste des options, voir
posixoptions(7).
Pour les variables ou les limites, il s'agit typiquement d'une constante
_FOO,
pouvant être définie dans
<limits.h>,
ou
_POSIX_FOO,
pouvant être définie dans
<unistd.h>.
La constante ne sera pas définie si la limite n'est pas spécifiée.
Si la constante est définie, cela donne une valeur garantie et pourrait
plus être supportée.
Si une application veut tirer parti des valeurs pouvant varier
entre les systèmes, l'appel de
sysconf()
permet d'obtenir ces informations.
L'argument de
sysconf()
sera
_SC_FOO.