_putenv, _wputenv

Erstellt, ändert oder entfernt Umgebungsvariablen. Sicherere Versionen dieser Funktionen sind verfügbar; siehe _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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

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_stringersetzt. 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_stringoder 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 _putenvfinden Sie unter getenv, . _wgetenv

Siehe auch

Prozess- und Umgebungskontrolle
getenv, _wgetenv
_searchenv, _wsearchenv