Condividi tramite


_putenv_s, _wputenv_s, _tputenv_s

Crea, modifica o rimuove variabili di ambiente. Queste funzioni sono versioni di , _wputenvcon 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