_putenv
, _wputenv
Crée, modifie ou supprime des variables d'environnement. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez _putenv_s
, _wputenv_s
.
Important
Cette API ne peut pas être utilisée dans les applications qui s’exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.
Syntaxe
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
Paramètres
envstring
Définition de chaîne d’environnement.
Valeur retournée
Les fonctions retournent 0 en cas de réussite, ou -1 en cas d’erreur.
Notes
La fonction _putenv
ajoute de nouvelles variables d'environnement ou modifie les valeurs des variables d'environnement existantes. Les variables d'environnement définissent l'environnement d'exécution d'un processus (par exemple, le chemin de recherche par défaut pour les bibliothèques à lier à un programme). _wputenv
est une version à caractères larges de _putenv
; l'argument envstring
de _wputenv
est une chaîne à caractères larges.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Mappages de routines de texte générique
Routine Tchar.h |
_UNICODE and _MBCS non défini |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
L’argument envstring
doit être un pointeur désignant une chaîne au format varname=value_string
, varname
représentant le nom de la variable d’environnement à ajouter ou modifier et value_string
la valeur de la variable. Si varname
fait déjà partie de l’environnement, sa valeur est remplacée par value_string
; sinon, la nouvelle variable varname
et sa valeur value_string
sont ajoutées à l’environnement. Vous pouvez supprimer une variable de l’environnement en spécifiant un élément vide value_string
, ou en d’autres termes, en spécifiant uniquement varname
=.
_putenv
et _wputenv
affectent uniquement l’environnement local du processus actuel ; vous ne pouvez pas les utiliser pour modifier l’environnement au niveau de la commande. Autrement dit, ces fonctions fonctionnent uniquement sur les structures de données accessibles à la bibliothèque d’exécution. Ils ne fonctionnent pas sur le segment d’environnement créé pour un processus par le système d’exploitation. Quand le processus actif se termine, l’environnement repasse au niveau du processus appelant (dans la plupart des cas, celui du système d’exploitation). Cependant, l’environnement modifié peut être transmis aux nouveaux processus créés par _spawn
, _exec
ou system
, et ces nouveaux processus obtiennent les nouveaux éléments ajoutés par _putenv
et _wputenv
.
Ne modifiez pas directement une entrée d’environnement : à la place, utilisez _putenv
ou _wputenv
modifiez-la. En effet, la libération directe d’éléments du tableau global _environ[]
pourrait entraîner l’adressage d’une mémoire non valide.
_getenv
et _putenv
utilisent la variable globale _environ
pour accéder à la table d'environnement ; _wgetenv
et _wputenv
utilisent _wenviron
. _putenv
et _wputenv
peut modifier la valeur et _environ
_wenviron
, par conséquent, invalider l’argument _envp
et main
l’argument _wenvp
sur wmain
. Par conséquent, il est plus sûr d’utiliser _environ
ou _wenviron
d’accéder aux informations d’environnement. Pour plus d’informations sur la relation et _putenv
les variables globales, consultez_environ
, _wenviron
._wputenv
Remarque
Les familles de fonctions _putenv
et _getenv
ne sont pas thread-safe. _getenv
peut retourner un pointeur de chaîne pendant que _putenv
modifie la chaîne, ce qui provoque des échecs aléatoires. Assurez-vous que les appels à ces fonctions sont synchronisés.
Spécifications
Routine | En-tête requis |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
Pour obtenir un exemple d’utilisation _putenv
, consultez getenv
, _wgetenv
.
Voir aussi
Processus et contrôle d’environnement
getenv
, _wgetenv
_searchenv
, _wsearchenv