GETENV _wgetenv
Získejte hodnotu z aktuálního prostředí.Bezpečnější verze tyto funkce jsou k dispozici; see getenv_s _wgetenv_s.
Důležité |
---|
Toto rozhraní API nelze použít v aplikacích, které jsou spuštěny v systému Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW. |
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
Parametry
- varname
Název proměnné prostředí.
Vrácená hodnota
Vrací ukazatel na prostředí tabulky Položka obsahující varname.Není to sice změnit hodnotu proměnné prostředí pomocí Vrácený ukazatel.Použití _putenv funkci, kterou chcete změnit hodnotu proměnné prostředí.Vrácená hodnota je NULL -li varname nebyl nalezen v tabulce prostředí.
Poznámky
getenv Funkce prohledá seznam proměnných prostředí pro varname.getenvje malá a velká písmena v operačním systému Windows.getenva _putenv pomocí kopie prostředí odkazuje globální proměnnou _environ přístup k prostředí.getenvfunguje pouze u datových struktur, které jsou přístupné knihovny run-time a nikoli na životní prostředí "segment" pro proces vytvořen operačním systémem.Proto programech, které používají envp argument hlavní nebo wmain může načíst neplatné informace.
Pokud varname je NULL, tato funkce vyvolá obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, tato funkce nastaví errno na EINVAL a vrátí NULL.
_wgetenvje verzí širokého znaku getenv; argument a vrací hodnotu _wgetenv jsou řetězci širokého znaku._wenviron Globální proměnná je verzí širokého znaku _environ.
V programu znakové sady MBCS (například v programu SBCS ASCII) _wenviron je původně NULL protože prostředí je tvořeno vícebajtové znakové řetězce.Poté na první volání _wputenv, nebo při prvním volání _wgetenv Pokud prostředí (znaková sada MBCS) již existuje, odpovídající prostředí-široký znak je vytvořena a je potom odkazuje _wenviron.
Podobně v Unicode (_wmain) programu, _environ je původně NULL protože prostředí se skládá z řetězce širokého znaku.Poté na první volání _putenv, nebo při prvním volání getenv (Unicode) prostředí již existuje-li, odpovídající znakové sady MBCS prostředí je vytvořena a je potom odkazuje _environ.
Pokud dvě kopie prostředí (znaková sada MBCS a Unicode) současně v programu, běhu systému musí udržovat obě kopie za následek pomalejší doba spuštění.Například při každém volání _putenv, volání _wputenv se rovněž provádí automaticky, tak, že odpovídají prostředí dva řetězce.
Upozornění |
---|
Ve výjimečných případech při běhu systému udržuje verze Unicode a vícebajtovou verzí prostředí, tyto dvě prostředí verze nemusí odpovídat přesně.To je protože, ačkoli všechny jedinečné vícebajtové znakové řetězce mapuje jedinečný řetězec znaků Unicode, mapování jedinečný řetězec znaků Unicode řetězec vícebajtových znaků není nutně jedinečný.Další informace naleznete v tématu _environ, _wenviron. |
[!POZNÁMKA]
_putenv a _getenv rodin funkcí jsou vláknově bezpečné._getenvmůže vrátit ukazatel na řetězec při _putenv je úprava řetězce, což způsobí náhodné selhání.Ujistěte se, že volání na tyto funkce jsou synchronizovány.
Mapování rutiny obecného textu
TCHAR.Byla zahájena rutina h |
_UNICODE & _MBCS není definováno |
_MBCS, definice |
_UNICODE definována |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Chcete-li zkontrolovat nebo změnit hodnotu TZ proměnné, použijte prostředí getenv, _putenv a _tzset podle potřeby.Další informace o TZ, viz _tzset a _daylight, časové pásmo a _tzname.
Požadavky
Byla zahájena rutina |
Požadované záhlaví |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> nebo <wchar.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Příklad
// 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 );
}
Ekvivalent v rozhraní .NET Framework
System::Environment::GetEnvironmentVariable