Condividi tramite


getenv, _wgetenv

Ottenere un valore dall'ambiente corrente.Più versioni sicure di queste funzioni sono disponibili, vedere getenv_s, _wgetenv_s.

Nota importanteImportante

Questa API non può essere utilizzata nelle applicazioni che vengono eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW.

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

Parametri

  • varname
    Nome della variabile di ambiente.

Valore restituito

Restituisce un puntatore alla voce della tabella dell'ambiente contenente varname.Non è possibile modificare il valore della variabile di ambiente utilizzando il puntatore restituito.Utilizzare la funzione di _putenv per modificare il valore di una variabile di ambiente.Il valore restituito è NULL se varname non viene trovato nella tabella dell'ambiente.

Note

La funzione di getenv trovare l'elenco di variabili di ambiente varname.getenv non viene rilevata la distinzione tra maiuscole e minuscole nel sistema operativo Windows.getenv e _putenv utilizzano la copia dell'ambiente fa riferimento la variabile globale _environ per accedere all'ambiente.getenv funziona solo in strutture di dati accessibili alla libreria di runtime e non sull'ambiente "segmento" creato per il processo dal sistema operativo.Di conseguenza, i programmi che utilizzano l'argomento di envp a principale o a wmain possibile recuperare le informazioni non valide.

Se varname è NULL, chiamare questa funzione di un gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione può continuare, la funzione imposta errno e imposta EINVAL su NULL.

_wgetenv è una versione a caratteri estesi di getenv; gli argomenti e i valori restituiti di _wgetenv sono stringhe con caratteri estesi.La variabile globale di _wenviron è una versione a caratteri estesi di _environ.

In un programma MBCS (ad esempio, in un programma ASCII SBCS), _wenviron inizialmente è NULL perché l'ambiente è costituito di stringhe di caratteri multibyte.Successivamente, nella prima chiamata a _wputenv, o alla prima chiamata a _wgetenv se un ambiente MBCS) esiste già, un ambiente corrispondente stringa di caratteri estesi viene creato e si fa riferimento da _wenviron.

Analogamente in un programma Unicode (_wmain), _environ inizialmente è NULL perché l'ambiente è costituito di stringhe di caratteri estesi.Successivamente, nella prima chiamata a _putenv, o alla prima chiamata a getenv se l'ambiente (Unicode) esiste già, un ambiente corrispondente MBCS viene creato e si fa riferimento da _environ.

Quando due copie dell'ambiente MBCS e Unicode) presenti contemporaneamente in un programma, il sistema runtime deve gestire entrambe le copie, con conseguente tempo di esecuzione più lenta.Ad esempio, ogni volta che si chiama _putenv, una chiamata a _wputenv viene eseguita automaticamente, in modo che le due stringhe dell'ambiente corrispondono.

Nota di avvisoAttenzione

In rare occasioni, quando il sistema in runtime viene gestito sia una versione Unicode che una versione multibyteambiente, queste versioni di due ambienti non possono corrispondere esattamente.Questo perché, anche se alcuni mapping univoci della stringa con caratteri multibyte a una stringa Unicode univoca, il mapping da una stringa Unicode univoca a una stringa di caratteri multibyte non è sempre univoci.Per ulteriori informazioni, vedere _environ, _wenviron.

[!NOTA]

I gruppi di _getenv e di _putenv di funzioni non sono thread-safe._getenv potrebbe restituire un puntatore di stringa mentre _putenv sta modificando la stringa, causando errori casuali.Assicurarsi che le chiamate alle funzioni siano sincronizzate.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tgetenv

getenv

getenv

_wgetenv

Per controllare in base alle esigenze o modificare il valore della variabile di ambiente TZ, utilizzare getenv, di _putenv e di _tzset.Per ulteriori informazioni su TZ, vedere _tzset e _daylight, fuso orario e _tzname.

Requisiti

Routine

Intestazione obbligatoria

getenv

<stdlib.h>

_wgetenv

<stdlib.h> o <wchar.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

// 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 );
}
  

Equivalente .NET Framework

System::Environment::GetEnvironmentVariable

Vedere anche

Riferimenti

Processo e controllo ambiente

_putenv, _wputenv

Costanti ambientali