GETENV |
Demande à l'environnement |
---|---|
Langage C | stdlib.h |
Syntaxe
int getenv(const char *vnom); |
Paramètres
Nom | Description | ||
---|---|---|---|
vnom | Ce paramètre permet d'indiquer le nom de la variable d'environnement : | ||
Variable | Description | Portabilité | |
"ALLUSERSPROFILE" | Cette variable permet d'indiquer le répertoire où est situé le profile utilisateur pour tous les utilisateurs | Windows NT | |
"APPDATA" | Cette variable permet d'indiquer le répertoire où sont situés les données d'application de l'utilisateur courant | Windows NT | |
"BLASTER" | Cette variable permet d'indiquer les paramètres de la carte de son de type «SoundBlaster» | Application | |
"CFGFILE" | Cette variable permet d'indiquer l'emplacement du fichier de configuration du système d'exploitation. | FreeDOS | |
"CLASSPATH" | Cette variable permet d'indiquer le répertoire de recherche pour le Java. | Application Java | |
"CommonProgramFiles" | Cette variable permet d'indiquer le répertoire où sont situés les fichiers communs d'application | Windows NT | |
"COMPUTERNAME" | Cette variable permet d'indiquer le nom de l'ordinateur | Windows NT | |
"COMSPEC" | Cette variable permet d'indiquer le nom de l'interpréteur de commande | DOS, OS/2, Windows | |
"CONFIG" | Cette variable permet d'indiquer le nom de la configuration lors du démarrage du système d'exploitation. | FreeDOS, MS-DOS | |
"DESKTOP_SESSION" | Cette variable permet d'indiquer le nom de l'environnement graphique : gnome,... | Linux | |
"DIRCMD" | Cette variable permet d'indiquer les paramètres par défaut de la commande «DIR» de l'interpréteur de commande | DOS, OS/2, Windows | |
"DOSDIR" | Cette variable permet d'indiquer le répertoire du système d'exploitation DOS. | FreeDOS | |
"HELPPATH" | Cette variable permet d'indiquer le répertoire d'aide du système d'exploitation. | FreeDOS | |
"HOME" | Cette variable permet d'indiquer le dossier où se situe les informations de compte de l'utilisateur courant. | Linux | |
"HOMEDRIVE" | Cette variable permet d'indiquer l'unité de disque de l'utilisateur courant | Windows NT | |
"HOMEPATH" | Cette variable permet d'indiquer le répertoire de l'utilisateur courant | Windows NT | |
"LANG" | Cette variable permet d'indiquer les MID de langue courante du système d'exploitation (FR=Français, EN=anglais,...) | FreeDOS, Linux | |
"LOGONSERVER" | Cette variable permet d'indiquer le chemin réseau pour se connecter au serveur | Windows NT | |
"MALTE" | Cette variable permet d'indiquer le répertoire racine de le progiciel MonsterBook | Application | |
"NLSPATH" | Cette variable permet d'indiquer le répertoire de configuration international du système d'exploitation. | FreeDOS | |
"NUMBER_OF_PROCESSORS" | Cette variable permet d'indiquer le nombre de microprocesseur détecté sur la machine | Windows NT | |
"OS" | Cette variable permet d'indiquer le nom du système d'exploitation | Windows NT | |
"PATH" | Cette variable permet d'indiquer le répertoire de recherche pour les applications du système d'exploitation | DOS, OS/2, Windows, Linux | |
"PATHEXT" | Cette variable permet d'indiquer les extensions exécutable sur le système d'exploitation. Ils sont séparés par des points-virgule (;). | Windows NT | |
"PROCESSOR_ARCHITECTURE" | Cette variable permet d'indiquer le type de microprocesseur fonctionnant sur la machine. | Windows NT | |
"PROCESSOR_IDENTIFIER" | Cette variable permet d'indiquer l'identificateur de microprocesseur fonctionnant sur la machine. | Windows NT | |
"PROCESSOR_LEVEL" | Cette variable permet d'indiquer le niveau de génération du microprocesseur fonctionnant sur la machine. | Windows NT | |
"PROCESSOR_REVISION" | Cette variable permet d'indiquer le numéro de révision du microprocesseur fonctionnant sur la machine. | Windows NT | |
"ProgramFiles" | Cette variable permet d'indiquer le répertoire où sont situé les applications installé avec ce système d'exploitation | Windows NT | |
"PROMPT" | Cette variable permet d'indiquer l'aspect d'affichage du prompt de l'interpréteur de commande | DOS, OS/2, Windows | |
"QTJAVA" | Cette variable permet d'indiquer le répertoire de recherche pour le QuickTime avec Java. | Application Java | |
"SESSIONNAME" | Cette variable permet d'indiquer le nom de session en cours. | Windows NT | |
"SHELL" | Cette variable permet d'indiquer le nom de l'interpréteur de commande courant. | Linux | |
"SystemDrive" | Cette variable permet d'indiquer l'unité de disque du système d'exploitation. | Windows NT | |
"SystemRoot" | Cette variable permet d'indiquer le répertoire racine du système d'exploitation. | Windows NT | |
"TEMP" | Cette variable permet d'indiquer le répertoire pour les données temporaire d'application | DOS, OS/2, Windows | |
"TMP" | Cette variable permet d'indiquer le répertoire pour les données temporaire d'application | DOS, OS/2, Windows | |
"USER" | Cette variable permet d'indiquer l'identificateur de l'utilisateur courant. | Linux | |
"USERDOMAIN" | Cette variable permet d'indiquer le nom de domaine de l'utilisateur courant. | Windows NT | |
"USERNAME" | Cette variable permet d'indiquer le nom de l'utilisateur courant. | Windows NT, Linux | |
"USERPROFILE" | Cette variable permet d'indiquer le chemin où est situé le profile de l'utilisateur courant. | Windows NT | |
"WATTCP.CFG" | Cette variable permet d'indiquer le répertoire d'emplacement du fichier de configuration du Watcom C++ | Application | |
"WINDIR" | Cette variable permet d'indiquer le répertoire racine de Windows | OS/2, Windows | |
... | ... | ... |
Retour
Valeur | Description |
---|---|
NULL | Cette valeur permet d'indiquer qu'aucun nom de variable d'environnement système n'a été trouvé. |
pointeur | Ces valeurs permettent d'indiquer un pointeur vers une chaîne de caractères de l'environnement système. |
Description
Cette fonction permet d'effectuer la lecture d'une variable d'environnement système.
Algorithme
MODULE GETENV(name) SI name est NULL ou name est vide ALORS * Le nom de la variable est invalide RETOURNE NULL FIN SI BOUCLE POUR CHAQUE variable dans environment_variables FAIRE SI variable.name = name ALORS * Retourne la valeur de la variable RETOURNE variable.value FIN SI FIN BOUCLE POUR CHAQUE * La variable n'existe pas RETOURNE NULL |
Remarques
- Lecture uniquement : La fonction getenv retourne un pointeur sur une chaîne de caractères associée au membre de liste correspondante. La chaîne de caractères pointée ne doit pas être modifiée par le programme, mais peut être écrasée par un appel ultérieur à la fonction getenv. Si le nom spécifié est introuvable, un pointeur NULL est renvoyé.
- Accès aux variables d'environnement : La fonction getenv() permet de récupérer la valeur d'une variable d'environnement système. Elle prend en paramètre une chaîne de caractères (le nom de la variable) et retourne un pointeur vers une chaîne de caractères contenant sa valeur, ou NULL si la variable n'existe pas.
- Retour des pointeurs vers des données internes : Le pointeur retourné par getenv() fait référence à des données internes gérées par le système. Ces données ne doivent pas être modifiées directement, car cela pourrait entraîner un comportement imprévisible du programme.
- Portabilité entre systèmes : Bien que getenv() soit disponible sur de nombreux systèmes conformes à la norme POSIX et C standard, les variables d'environnement elles-mêmes peuvent varier selon le système d'exploitation (Linux, Windows, macOS,...). Par exemple, PATH ou HOME sont courants sous Unix, tandis que COMSPEC est spécifique à Windows ou DOS.
- Sensibilité à la casse : Sous les systèmes Unix et Linux, les noms des variables d'environnement sont sensibles à la casse. Ainsi, PATH et Path sont considérés comme différents. En revanche, sous Windows, les noms des variables ne sont pas sensibles à la casse.
- Risques liés à la sécurité : Étant donné que les variables d'environnement peuvent contenir des informations sensibles (comme des mots de passe ou des chemins critiques), il est essentiel de valider et de nettoyer les données récupérées via getenv() avant de les utiliser dans le programme.
- Utilisation dans la configuration des programmes : getenv() est souvent utilisée pour configurer dynamiquement des applications en fonction de l'environnement d'exécution. Par exemple, une application peut déterminer le répertoire de travail en lisant la variable HOME ou configurer des chemins d'accès en utilisant PATH.
- Problème de processus léger : Dans des environnements multi-processus léger, l'utilisation de getenv() peut ne pas être sûre, car les variables d'environnement sont souvent partagées entre les processus légers. Des précautions doivent être prises pour éviter des conditions de course, par exemple en protégeant les accès avec des verrous.
Exemple
Voici un exemple montrant une utilisation à la suite d'un test :
Essayer maintenant !
on pourrait obtenir résultat semblable à celui-ci sous Windows Vista :
PATH = .;C:\Program Files (x86)\CodeBlocks\MinGW\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\hp\bin\Python;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\Windows Live\Shared;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Sun\SDK\binou on pourrait obtenir résultat semblable à celui-ci sous Linux Ubuntu :
PATH = /usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/gamesVoir également
Langage de programmation - C++ - Référence procédures et fonctions - getenv
Langage de programmation - Turbo Pascal - Référence procédures et fonctions - GETENV
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 127.
Dernière mise à jour : Mardi, le 28 juillet 2015