Partager via


getenv, _wgetenv

Obtenir une valeur de l'environnement actuel.Les versions sécurisées de ces fonctions sont disponibles ; consultez getenv_s, _wgetenv_s.

Important

Cette API ne peut pas être utilisée dans les applications qui s'exécutent dans les fenêtres d'exécution.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /ZW.

char *getenv( 
   const char *varname 
);
wchar_t *_wgetenv( 
   const wchar_t *varname 
);

Paramètres

  • varname
    Nom de la variable d'environnement.

Valeur de retour

Retourne un pointeur vers l'entrée de table d'environnement contenant varname.Il n'est pas possible de modifier la valeur de la variable d'environnement à l'aide de le pointeur retourné.Utilisez la fonction d' _putenv pour modifier la valeur d'une variable d'environnement.La valeur de retour est NULL si varname est introuvable dans la table d'environnement.

Notes

La fonction d' getenv recherche la liste de variables d'environnement pour varname.getenv ne respecte pas la casse de la casse dans le système d'exploitation Windows.getenv et _putenv utilisent la copie de l'environnement globale pointe vers la variable globale _environ pour accéder à l'environnement.getenv fonctionne uniquement sur les structures de données accessibles à la bibliothèque Runtime et pas sur l'environnement « segment » créé pour le processus par le système d'exploitation.Par conséquent, les programmes qui utilisent l'argument d' envp à principal ou à wmain peuvent extraire des informations non valides.

Si varname est NULL, cette fonction appelle un gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, définit errno de cette fonction à EINVAL et retourne NULL.

_wgetenv est une version à caractère élargi d' getenv; l'argument et la valeur de retour d' _wgetenv sont des chaînes à caractères larges.La variable globale d' _wenviron est une version à caractère élargi d' _environ.

Dans un programme MBCS (par exemple, dans un programme ASCII SBCS), _wenviron est initialement NULL parce que l'environnement est composé des chaînes de caractères multioctets.Puis, dans le premier appel à _wputenv, ou dans le premier appel à _wgetenv si un environnement (MBCS) existe déjà, un environnement correspondant de chaîne à caractères larges est créé puis est globale pointe vers _wenviron.

De la même façon dans un programme Unicode (_wmain), _environ est initialement NULL parce que l'environnement est composé des chaînes à caractères larges.Puis, dans le premier appel à _putenv, ou dans le premier appel à getenv si l'environnement (Unicode) existe déjà, un environnement correspondant MBCS est créé puis est globale pointe vers _environ.

Lorsque deux copies de l'environnement (MBCS et Unicode) existent simultanément dans un programme, le système runtime doit mettre à jour les deux copies, ce qui provoque une durée d'exécution plus lente.Par exemple, lorsque vous appelez _putenv, un appel à _wputenv est également exécuté automatiquement, afin que les deux chaînes d'environnement correspondant.

Mise en gardeAttention

Dans des instances rares, lorsque le système runtime gère une version Unicode et une version multioctets de l'environnement, ces versions de deux environnements peuvent ne pas correspondre exactement.En effet, bien qu'aucune seule mappage de chaîne de caractères multioctets à une seule chaîne Unicode, le mappage d'une seule chaîne Unicode d'une chaîne de caractères multioctets ne soit nécessairement seule.Pour plus d'informations, consultez l' _environ, _wenviron.

[!REMARQUE]

Les familles de _putenv et d' _getenv des fonctions ne sont pas thread-safe._getenv peut retourner un pointeur de chaîne alors qu' _putenv modifie la chaîne, provoquant des défaillances aléatoires.Assurez-vous que les appels à ces fonctions sont synchronisés.

Mappages de routines de texte générique

Routine de TCHAR.H

_UNICODE et non définis _MBCS

_MBCS défini

_UNICODE défini

_tgetenv

getenv

getenv

_wgetenv

Pour vérifier ou modifier la valeur de la variable d'environnement d' TZ, de l'utilisation getenv, de l' _putenv et de l' _tzset si nécessaire.Pour plus d'informations sur TZ, consultez _tzset et l' _daylight, fuseau horaire, et _tzname.

Configuration requise

Routine

En-tête requis

getenv

<stdlib.h>

_wgetenv

<stdlib.h> ou <wchar.h>

Pour des informations de compatibilité supplémentaires, consultez l' Compatibilité dans l'introduction.

Exemple

// crt_getenv.c
// compile with: /W3
// This program uses getenv to retrieve
// the LIB environment variable and then uses
// _putenv to change it to a new value.
 
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char *libvar;

   // Get the value of the LIB environment variable.
   libvar = getenv( "LIB" ); // C4996
   // Note: getenv is deprecated; consider using getenv_s instead

   if( libvar != NULL )
      printf( "Original LIB variable is: %s\n", libvar );

   // Attempt to change path. Note that this only affects the environment
   // variable of the current process. The command processor's
   // environment is not changed.
   _putenv( "LIB=c:\\mylib;c:\\yourlib" ); // C4996
   // Note: _putenv is deprecated; consider using putenv_s instead

   // Get new value.
   libvar = getenv( "LIB" ); // C4996

   if( libvar != NULL )
      printf( "New LIB variable is: %s\n", libvar );
}
  

Équivalent .NET Framework

System::Environment::GetEnvironmentVariable

Voir aussi

Référence

Processus et contrôle ambiance

_putenv, _wputenv

Constantes d'environnement