_putenv_s
, _wputenv_s
, _tputenv_s
Crea, modifica o rimuove variabili di ambiente. Queste funzioni sono versioni di , _wputenv
con miglioramenti della_putenv
sicurezza, come descritto in Funzionalità di sicurezza in CRT.
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).
Per _tputenv_s
, vedere Mapping di funzioni di testo generico.
Sintassi
errno_t _putenv_s(
const char *varname,
const char *value_string
);
errno_t _wputenv_s(
const wchar_t *varname,
const wchar_t *value_string
);
Parametri
varname
Il nome della variabile di ambiente.
value_string
Il valore da impostare nella variabile di ambiente.
Valore restituito
Restituisce 0 se ha esito positivo o un codice di errore.
Condizioni di errore
varname |
value_string |
Valore restituito |
---|---|---|
NULL |
qualsiasi | EINVAL |
qualsiasi | NULL |
EINVAL |
Se si verifica una delle condizioni di errore, queste funzioni richiamano un gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EINVAL
e impostano errno
su EINVAL
.
Osservazioni:
La funzione _putenv_s
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_s
è una versione a caratteri wide di _putenv_s
; l'argomento envstring
in _wputenv_s
è 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 funzioni di testo generico
La funzione nella tchar.h
colonna esegue il mapping alla funzione nelle altre colonne a seconda del set di caratteri definito in fase di compilazione.
Funzione tchar.h |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tputenv_s |
_putenv_s |
_putenv_s |
_wputenv_s |
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 value_string
vengono aggiunti all'ambiente. È possibile rimuovere una variabile dall'ambiente specificando una stringa vuota (ovvero ""
, ) per value_string
.
_putenv_s
e _wputenv_s
influiscono solo sull'ambiente locale per il processo corrente. Non è possibile usarli per modificare l'ambiente a livello di comando. Queste funzioni sono disponibili solo nelle strutture dati accessibili dalla libreria di runtime e non nel "segmento" di ambiente creato per un processo dal sistema operativo. Quando il processo corrente termina, l'ambiente viene ripristinato al livello del processo chiamante che, 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 i nuovi elementi aggiunti da _putenv_s
e _wputenv_s
.
Non modificare direttamente una voce di ambiente; In alternativa, usare _putenv_s
o _wputenv_s
per modificarlo. In particolare, la liberazione diretta di elementi della matrice globale _environ[]
potrebbero portare ad un indirizzamento di memoria non valido.
getenv
e _putenv_s
usano la variabile globale _environ
per accedere e modificare la tabella dell'ambiente; _wgetenv
e _wputenv_s
usano _wenviron
. _putenv_s
e _wputenv_s
possono modificare il valore di _environ
e _wenviron
e pertanto invalidano l'argomento envp
a main
e l'argomento _wenvp
a wmain
. Pertanto, è più sicuro usare _environ
o _wenviron
accedere alle informazioni sull'ambiente. Per altre informazioni sulla relazione tra _putenv_s
e a variabili globali, vedere_environ
, _wenviron
._wputenv_s
Nota
Le famiglie di funzioni _putenv_s
e _getenv_s
non sono thread-safe. _getenv_s
potrebbe restituire un puntatore di stringa mentre _putenv_s
modifica la stringa e, quindi, causa errori casuali. Assicurarsi che le chiamate alle funzioni siano sincronizzate.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_putenv_s |
<stdlib.h> |
_wputenv_s |
<stdlib.h> oppure <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
Per un esempio che illustra come usare _putenv_s
, vedere getenv_s
, _wgetenv_s
.
Vedi anche
Processo e controllo dell'ambiente
getenv
, _wgetenv
_searchenv
, _wsearchenv