getenv, _wgetenv
Ruft einen Wert aus der aktuellen Umgebung ab.Sicherere Versionen dieser Funktionen sind verfügbar; finden Sie unter getenv_s, _wgetenv_s.
Wichtig |
---|
Diese API kann nicht in den Anwendungen verwendet werden, die in der Windows Runtime ausführen.Weitere Informationen finden Sie unter CRT-Funktionen unterstützt nicht mit /ZW. |
char *getenv( const char *varname ); wchar_t *_wgetenv( const wchar_t *varname );
Parameter
- varname
Umgebungsvariablenname.
Rückgabewert
Gibt einen Zeiger auf Umgebungstabelleneintrag zurück, der varname enthält.Es ist nicht sicher, den Wert der Umgebungsvariablen mithilfe des zurückgegebenen Zeiger zu ändern.Verwenden Sie die _putenv-Funktion, um den Wert einer Umgebungsvariablen zu ändern.Der Rückgabewert ist NULL, wenn varname nicht in der Umgebungstabelle gefunden wird.
Hinweise
Die getenv-Funktion sucht die Liste der Umgebungsvariablen für varname.getenv ist nicht im Windows-Betriebssystem die Groß-/Kleinschreibung beachtet.getenv und _putenv verwenden die Kopie der Umgebung, die durch die globale Variable _environ dargestellt werden, um auf die Umgebung auf.getenv kann nur für den Datenstrukturen, die der Laufzeitbibliothek zugegriffen werden kann und nicht auf der Umgebung "das Segment", das für den Prozess durch das Betriebssystem erstellt wird.Daher rufen möglicherweise Programme, die das envp-Argument zu Haupt- oder zu wmain verwenden, ungültige Informationen ab.
Wenn varnameNULL ist, Aufrufe dieser Funktion ein ungültiger Parameterhandler, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, gibt Sätze errno dieser Funktion zu EINVAL und NULL zurück.
_wgetenv ist eine Breitzeichen-Version von getenv; das Argument und der Rückgabewert von _wgetenv sind Breitzeichen-Zeichenfolgen.Die globale Variable _wenviron ist eine Breitzeichen-Version von _environ.
In einem MBCS-Programm (beispielsweise, in einem SBCS-ASCII-Programm), ist _wenviron zuerst NULL, da die Umgebung von Mehrbyte-Zeichenfolgen besteht.Anschließend beim ersten Aufruf von _wputenv oder beim ersten Aufruf von _wgetenv, wenn eine Umgebung (MBCS) bereits vorhanden ist, wird eine entsprechende Breitzeichen-Umgebung erstellt und wird anschließend durch _wenviron gezeigt.
Entsprechend in einem Programm von Unicode (_wmain), ist _environ zuerst NULL, da die Umgebung aus Zeichenfolgen mit Breitzeichen besteht.Anschließend beim ersten Aufruf von _putenv oder beim ersten Aufruf von getenv, wenn Umgebung ein (Unicode) bereits vorhanden ist, wird eine entsprechende MBCS-Umgebung erstellt und wird anschließend durch _environ gezeigt.
Wenn zwei Kopien der Umgebung (MBCS und Unicode) gleichzeitig in einem Programm vorhanden sind, muss das Laufzeitsystem beide Kopien, Ergebnis der langsameren Ausführungszeit beibehalten.Beispielsweise wenn Sie _putenv aufrufen, wird ein Aufruf _wputenv auch automatisch ausgeführt, sodass die zwei Umgebungszeichenfolgen entsprechen.
Vorsicht |
---|
In seltenen Fällen wenn das Laufzeitsystem eine Unicode-Version und eine - Version der Umgebung verwaltet werden, entsprechen diese Versionen möglicherweise mit zwei Umgebungen nicht genau.Dies liegt daran, dass, obwohl keine eindeutigen Mehrbyte-Zeichenfolgen-Zuordnungen zu einer eindeutigen Unicode-Zeichenfolge, die Zuordnung von einer eindeutigen Unicode-Zeichenfolge in einer Mehrbyte-Zeichenfolge nicht unbedingt eindeutig ist.Weitere Informationen finden Sie unter _environ, _wenviron. |
Hinweis |
---|
Die _putenv und _getenv Familien von Funktionen sind nicht threadsicher._getenv konnte einen Zeichenfolgenzeiger zurückgeben, während _putenv die Zeichenfolge geändert und Zufallsausfälle verursachen.Überprüfen Sie, ob Aufrufe dieser Funktionen synchronisiert werden. |
Zuordnung generische Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert. |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
So legen Sie den Wert der TZ Umgebungsvariable, Verwendung getenv, des _putenv und des _tzset nach Bedarf überprüfen oder ändern.Weitere Informationen zu TZ, finden Sie unter _tzset und _daylight, Zeitzone und _tzname.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> oder <wchar.h> |
So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_getenv.c
// compile with: /W3
// This program uses getenv to retrieve
// the LIB environment variable and then uses
// _putenv to change it to a new value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *libvar;
// Get the value of the LIB environment variable.
libvar = getenv( "LIB" ); // C4996
// Note: getenv is deprecated; consider using getenv_s instead
if( libvar != NULL )
printf( "Original LIB variable is: %s\n", libvar );
// Attempt to change path. Note that this only affects the environment
// variable of the current process. The command processor's
// environment is not changed.
_putenv( "LIB=c:\\mylib;c:\\yourlib" ); // C4996
// Note: _putenv is deprecated; consider using putenv_s instead
// Get new value.
libvar = getenv( "LIB" ); // C4996
if( libvar != NULL )
printf( "New LIB variable is: %s\n", libvar );
}
.NET Framework-Entsprechung
System::Environment::GetEnvironmentVariable