_putenv
, _wputenv
Crea, modifica o rimuove variabili di ambiente. Sono disponibili versioni più sicure di queste funzioni; vedere _putenv_s
, _wputenv_s
.
Importante
Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
Parametri
envstring
Definizione della stringa di ambiente.
Valore restituito
Se ha esito positivo, le funzioni restituiscono 0 o -1 se si verifica un errore.
Osservazioni:
La funzione _putenv
aggiunge nuove variabili di ambiente o modifica i valori delle variabili di ambiente esistente. Le variabili di ambiente definiscono l'ambiente in cui viene eseguito un processo (ad esempio, il percorso di ricerca predefinito per le librerie da collegare a un programma). _wputenv
è una versione a caratteri wide di _putenv
; l'argomento envstring
in _wputenv
è una stringa di caratteri wide.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Tchar.h routine |
_UNICODE and _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
L'argomento envstring
deve essere un puntatore a una stringa nel formato varname=value_string
, dove varname
è il nome della variabile di ambiente da aggiungere o modificare e value_string
è il valore della variabile. Se varname
è già parte dell'ambiente, il valore viene sostituito da value_string
. In caso contrario, la nuova variabile varname
e il relativo valore value_string
vengono aggiunti all'ambiente. È possibile rimuovere una variabile dall'ambiente specificando un oggetto vuoto value_string
o, in altre parole, specificando solo varname
=.
_putenv
e _wputenv
influiscono solo sull'ambiente locale per il processo corrente. Non è possibile usarli per modificare l'ambiente a livello di comando. Ovvero, queste funzioni operano solo sulle strutture di dati accessibili alla libreria di runtime. Non operano sul segmento di ambiente creato per un processo dal sistema operativo. Al termine del processo corrente, l'ambiente viene ripristinato al livello del processo chiamante, ovvero nella maggior parte dei casi il livello del sistema operativo. Tuttavia, l'ambiente modificato può essere passato a tutti i nuovi processi creati da _spawn
, _exec
oppure da system
e questi nuovi processi ottengono gli eventuali nuovi elementi aggiunti da _putenv
e _wputenv
.
Non modificare direttamente una voce di ambiente: usare _putenv
o _wputenv
modificarla. In particolare, liberare direttamente gli elementi della matrice globale _environ[]
potrebbe causare un indirizzamento di memoria non valido.
_getenv
e _putenv
usano la variabile globale _environ
per accedere e modificare la tabella dell'ambiente; _wgetenv
e _wputenv
usano _wenviron
. _putenv
e _wputenv
potrebbe modificare il valore di _environ
e _wenviron
, invalidando quindi l'argomento _envp
in main
e l'argomento _wenvp
in wmain
. Pertanto, è più sicuro usare _environ
o _wenviron
accedere alle informazioni sull'ambiente. Per altre informazioni sulla relazione di _putenv
e con le variabili globali, vedere _environ
, _wenviron
_wputenv
.
Nota
Le famiglie di funzioni _putenv
e _getenv
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.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> oppure <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
Per un esempio di come usare _putenv
, vedere getenv
, _wgetenv
.
Vedi anche
Processo e controllo dell'ambiente
getenv
, _wgetenv
_searchenv
, _wsearchenv