_putenv
, _wputenv
Erstellt, ändert oder entfernt Umgebungsvariablen. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _putenv_s
, _wputenv_s
.
Wichtig
Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
Parameter
envstring
Definition der Umgebungszeichenfolge.
Rückgabewert
Die Funktionen geben bei erfolgreicher Ausführung 0 oder -1 zurück, wenn ein Fehler auftritt.
Hinweise
Die _putenv
-Funktion fügt neue Umgebungsvariablen hinzu oder ändert die Werte vorhandener Umgebungsvariablen. Umgebungsvariablen definieren die Umgebung, in der ein Prozess ausgeführt wird (beispielsweise der Standardsuchpfad für die mit einem Programm zu verknüpfenden Bibliotheken). _wputenv
ist eine Breitzeichenversion von _putenv
. Das envstring
-Argument für _wputenv
ist eine Breitzeichenfolge.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
Tchar.h -Routine |
_UNICODE and _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
Das envstring
-Argument muss ein Zeiger auf eine Zeichenfolge der Form varname=value_string
sein, wobei varname
der Name der hinzuzufügenden oder zu ändernden Umgebungsvariablen ist und value_string
der Wert der Variablen. Wenn varname
bereits Teil der Umgebung ist, wird sein Wert durch value_string
ersetzt. Andernfalls werden die neue varname
-Variable und ihr value_string
-Wert zur Umgebung hinzugefügt. Sie können eine Variable aus der Umgebung entfernen, indem Sie eine leere value_string
oder mit anderen Worten nur =angeben varname
.
_putenv
und _wputenv
wirkt sich nur auf die Umgebung aus, die lokal für den aktuellen Prozess ist. Sie können sie nicht verwenden, um die Umgebung auf Befehlsebene zu ändern. Das heißt, diese Funktionen funktionieren nur für Datenstrukturen, die für die Laufzeitbibliothek zugänglich sind. Sie arbeiten nicht mit dem Vom Betriebssystem erstellten Umgebungssegment für einen Prozess. Wenn der aktuelle Prozess beendet wird, wird die Umgebung auf die Ebene des aufrufenden Prozesses zurückgesetzt (in den meisten Fällen die Betriebssystemebene). Die geänderte Umgebung kann jedoch an alle neue Prozesse übergeben werden, die von _spawn
, _exec
oder system
erstellt werden, und diese neuen Prozesse rufen alle neuen Elemente ab, die von _putenv
und _wputenv
hinzugefügt werden.
Ändern Sie einen Umgebungseintrag nicht direkt: verwenden _putenv
oder _wputenv
ändern Sie ihn. Das direkte Loslösen von Elementen des globalen _environ[]
-Arrays kann nämlich dazu führen, dass ein ungültiger Speicher anvisiert wird.
_getenv
und _putenv
verwenden die globale Variable _environ
, um auf die Umgebungstabelle zuzugreifen; _wgetenv
und _wputenv
verwenden _wenviron
. _putenv
und _wputenv
kann den Wert von _environ
und _wenviron
, wodurch das _envp
Argument main
ungültig und das _wenvp
Argument in wmain
. Daher ist es sicherer, die Umgebungsinformationen zu verwenden _environ
oder _wenviron
darauf zuzugreifen. Weitere Informationen zur Beziehung von _putenv
und zu globalen Variablen finden Sie unter _environ
, _wenviron
_wputenv
.
Hinweis
Die Familien _putenv
und _getenv
der Funktionen sind nicht threadsicher. _getenv
gibt möglicherweise einen Zeichenfolgenzeiger zurück, während _putenv
die Zeichenfolge ändert, was zu zufälligen Fehlern führen kann. Stellen Sie sicher, dass Aufrufe dieser Funktionen synchronisiert sind.
Anforderungen
Routine | Erforderlicher Header |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
Ein Beispiel für die Verwendung _putenv
finden Sie unter getenv
, . _wgetenv
Siehe auch
Prozess- und Umgebungskontrolle
getenv
, _wgetenv
_searchenv
, _wsearchenv