sysconf - Obtenir des informations de configuration au moment de
l'exécution
Bibliothèque C standard (libc, -lc)
#include <unistd.h>
long sysconf(int nom);
POSIX permet à une application de tester à la
compilation ou à l'exécution si certaines options sont prises
en charge ou de déterminer quelles sont les valeurs de certaines
limites ou constantes configurables.
Cela 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 dans lequel un fichier réside 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, cela signifie que l'option n'est pas prise en charge. Si elle est
définie à 0, les en-têtes et les fonctions en
rapport existent mais vous devrez demander pendant l'exécution quel
degré de prise en charge est disponible. Si elle est définie
à une autre valeur que -1 ou 0, l'option est prise en
charge. Habituellement, la valeur (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 la prise
en charge 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, consultez
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 indiquée. Si la constante est
définie, elle fournit une valeur garantie et une valeur plus grande
pourrait être prise en charge. 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.
Nous allons donner le nom de la variable, le nom du
paramètre passé à sysconf() pour
s'enquérir de sa valeur et une brève description.
Tout d'abord, les valeurs compatibles POSIX.1.
- ARG_MAX -
_SC_ARG_MAX
- La longueur maximale des arguments des fonctions de la famille
exec(3). Ne doit pas être inférieure à
_POSIX_ARG_MAX (4096).
- CHILD_MAX -
_SC_CHILD_MAX
- Le nombre maximal de processus simultanés pour un UID. Ne doit pas
être moins que _POSIX_CHILD_MAX (25).
- HOST_NAME_MAX
- _SC_HOST_NAME_MAX
- La longueur maximale d'un nom d'hôte, sans inclure le
caractère nul final, tel qu'il est retourné par
gethostname(2). Ne doit pas être inférieure à
_POSIX_HOST_NAME_MAX (255).
- LOGIN_NAME_MAX
- _SC_LOGIN_NAME_MAX
- La longueur maximale d'un nom de connexion (login), incluant le
caractère nul final. Ne doit pas être inférieure
à _POSIX_LOGIN_NAME_MAX (9).
- NGROUPS_MAX
- _SC_NGROUPS_MAX
- Nombre maximal de GID supplémentaires.
- tops d'horloge -
_SC_CLK_TCK
- Le nombre de tops d'horloge par seconde. La macro correspondante est
obsolète. Il s'agit bien sûr de CLK_TCK (veuillez
noter que la macro CLOCKS_PER_SEC ne donne pas
d'information : elle doit être égale à
1000000).
- OPEN_MAX -
_SC_OPEN_MAX
- Le nombre maximal de fichiers qu'un processus peut ouvrir
simultanément. Ne doit pas être inférieur à
_POSIX_OPEN_MAX (20).
- PAGESIZE -
_SC_PAGESIZE
- Taille d'une page en octets. Ne doit pas être inférieure
à 1.
- PAGE_SIZE -
_SC_PAGE_SIZE
- Un synonyme de PAGESIZE ou _SC_PAGESIZE. (Les variables
PAGESIZE et PAGE_SIZE sont toutes les deux
spécifiées dans POSIX.)
- RE_DUP_MAX
- _SC_RE_DUP_MAX
- Le nombre maximal de répétitions d'une expression rationelle
permises par regexec(3) et regcomp(3). Ne doit pas
être inférieur à _POSIX2_RE_DUP_MAX
(255).
- STREAM_MAX
- _SC_STREAM_MAX
- Le nombre maximal de flux qu'un processus peut ouvrir
simultanément. Si la variable est définie, elle a la
même valeur que la macro C standard FOPEN_MAX. Ne doit pas
être inférieur à _POSIX_STREAM_MAX (8).
- SYMLOOP_MAX
- _SC_SYMLOOP_MAX
- Le nombre maximal de liens symboliques rencontrés dans le nom d'un
chemin avant que la résolution ne retourne ELOOP. Ne doit
pas être inférieur à _POSIX_SYMLOOP_MAX
(8).
- TTY_NAME_MAX
- _SC_TTY_NAME_MAX
- La longueur maximale du nom d'un périphérique terminal,
incluant l'octet NULL final. Ne doit pas être inférieure
à _POSIX_TTY_NAME_MAX (9).
- TZNAME_MAX
- _SC_TZNAME_MAX
- Le nombre maximal de caractères dans le nom d'un fuseau horaire. Ne
doit pas être inférieur à _POSIX_TZNAME_MAX
(6).
- _POSIX_VERSION - _SC_VERSION
- Indique l'année et le mois où la norme POSIX.1 a
été approuvé, en utilisant le format AAAAMML.
La valeur 199009L correspond à la révision de
septembre 1990.
Ensuite, les constantes POSIX.2 donnant les limites pour les
utilitaires.
- BC_BASE_MAX
- _SC_BC_BASE_MAX
- La valeur maximale pour obase acceptée par l'utilitaire
bc(1).
- BC_DIM_MAX
- _SC_BC_DIM_MAX
- La valeur maximale des éléments autorisés dans une
table par bc(1).
- BC_SCALE_MAX
- _SC_BC_SCALE_MAX
- La valeur maximale pour scale autorisée par
bc(1).
- BC_STRING_MAX
- _SC_BC_STRING_MAX
- La longueur maximale d'une chaîne acceptée par
bc(1).
- COLL_WEIGHTS_MAX
- _SC_COLL_WEIGHTS_MAX
- Indique le nombre maximal de poids à affecter à une
entrée dans le mot clé d'ordre LC_COLLATE du fichier
de définition de localisation.
- EXPR_NEST_MAX
- _SC_EXPR_NEST_MAX
- Le nombre maximal d'expressions imbriquées entre parenthèses
dans expr(1).
- LINE_MAX -
_SC_LINE_MAX
- La longueur maximale d'une ligne d'entrée d'un utilitaire, aussi
bien depuis l'entrée standard que depuis un fichier. Cette longueur
comprend l'emplacement du caractère final « nouvelle
ligne ».
- RE_DUP_MAX
- _SC_RE_DUP_MAX
- Le nombre maximal de répétitions d'une expression
rationnelle quand la notation d'intervalle \{m,n\} est
utilisée.
- POSIX2_VERSION
- _SC_2_VERSION
- Indique la version de la norme POSIX.2 au format AAAAMML.
- POSIX2_C_DEV
- _SC_2_C_DEV
- Indique si les utilitaires POSIX.2 de développement en C
sont pris en charge.
- POSIX2_FORT_DEV
- _SC_2_FORT_DEV
- Indique si les utilitaires POSIX.2 de développement en FORTRAN sont
pris en charge.
- POSIX2_FORT_RUN
- _SC_2_FORT_RUN
- Indique si les utilitaires POSIX.2 d'exécution FORTRAN sont pris en
charge.
- _POSIX2_LOCALEDEF - _SC_2_LOCALEDEF
- Indique si la création de localisation POSIX.2 avec
localedef(1) est prise en charge.
- POSIX2_SW_DEV
- _SC_2_SW_DEV
- Indique si l'option des utilitaires POSIX.2 de développement
logiciel est prise en charge.
Quelques valeurs existent sans appartenir à une
norme :
-
- _SC_PHYS_PAGES
- Le nombre de pages de mémoire physique. Notez qu'il est possible
que le produit de cette valeur et de la valeur _SC_PAGE_SIZE
déclenche un débordement.
-
- _SC_AVPHYS_PAGES
- Le nombre de pages de mémoire physique actuellement
disponibles.
-
- _SC_NPROCESSORS_CONF
- Le nombre de processeurs configurés. Voir aussi
get_nprocs_conf(3).
-
- _SC_NPROCESSORS_ONLN
- Le nombre de processeurs actuellement en ligne (disponibles). Voir aussi
get_nprocs_conf(3).
La valeur renvoyée de sysconf() est une des
suivantes :
- En cas d'erreur, la valeur de retour est -1 et errno est
définie pour préciser l'erreur (par exemple, EINVAL
indique que nom n'est pas valable).
- Si nom correspond à une limite maximale ou minimale et si
cette limite est indéterminée, -1 est renvoyé
et errno n'est pas modifié. (Pour distinguer une limite
indéterminée d'une erreur, définissez errno
à zéro avant l'appel, puis vérifiez si errno
est différent de zéro quand -1 est
renvoyé.)
- Si nom correspond à une option, une valeur positive est
renvoyée si l'option est prise en charge, et -1 est
renvoyé si l'option n'est pas prise en charge.
- Autrement, la valeur actuelle de l'option ou de la limite est
renvoyée. Cette valeur ne sera pas plus restrictive que la valeur
correspondante décrite pour l'application dans
<unistd.h> ou <limits.h> quand l'application a
été compilée.
Pour une explication des termes utilisés dans cette
section, consulter attributes(7).
Interface |
Attribut |
Valeur |
sysconf() |
Sécurité des threads |
MT-Safe env |
POSIX.1-2001, POSIX.1-2008.
Il est difficile d'utiliser ARG_MAX, car il n'est pas
précisé combien d'espace d'argument de exec(3) est
utilisé par les variables d'environnement de l'utilisateur.
Certaines valeurs renvoyées peuvent être
énormes ; elles ne sont pas utilisables pour réaliser
des allocations mémoires.
bc(1), expr(1), getconf(1), locale(1),
confstr(3), fpathconf(3), pathconf(3),
posixoptions(7)
La traduction française de cette page de manuel a
été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin
<stephan.rafin@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal
<aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh)
<jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux
<thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau
<fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier
<barbier@debian.org>, David Prévot <david@tilapin.org> et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez
vous reporter à la
GNU General
Public License version 3 concernant les conditions de copie et de
distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page
de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.