Sdílet prostřednictvím


getenv, _wgetenv

Získá hodnotu z aktuálního prostředí.Bezpečnější verze těchto funkcí jsou k dispozici; viz getenv_s, _wgetenv_s.

Důležitá poznámkaDůležité

Toto API nelze použít v aplikacích, které jsou spuštěny v modulu 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 položku tabulky prostředí obsahující varname.Není bezpečné, chcete-li změnit hodnotu proměnné prostředí pomocí Vrácený ukazatel.Použijte funkci _putenv, chcete-li změnit hodnotu proměnné prostředí.Vrácená hodnota je NULL -li varname nebyl nalezen v tabulce prostředí.

Poznámky

Funkce getenv prohledává seznam proměnných prostředí pro varname.getenv nerozlišuje velká a malá písmena v operačním systému Windows.getenva _putenv použít kopii odkazuje globální proměnnou prostředí _environ přístup k prostředí.getenvfunguje pouze na dostupné běhové knihovny datových struktur a ne na životní prostředí "segment" operační systém vytvořený pro proces.Proto programy, 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í parametru.Pokud provádění může pokračovat, tato funkce nastaví errno na EINVAL a vrátí NULL.

_wgetenvje verze širokého znaku getenv; hodnota argumentu a návrat _wgetenv jsou řetězci širokého znaku.Globální proměnná _wenviron je verze širokého znaku proměnné _environ.

V programu znakové sady MBCS (například v programu SBCS ASCII) _wenviron je původně NULL vzhledem k tomu, že životní 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í řetězec širokého znaku je vytvořena a je pak odkazuje na _wenviron.

Podobně v Unicode (_wmain) program, _environ je původně NULL vzhledem k tomu, že životní 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 Pokud již existuje v prostředí (Unicode), odpovídající prostředí MBCS je vytvořena a je pak odkazuje na _environ.

Při dvou kopií prostředí (znaková sada MBCS a Unicode), existují současně v programu, běhu systému musí zachovat obě kopie za následek pomalejší doba provádění.Například při volání _putenv, volání _wputenv se rovněž provádí automaticky, takže odpovídají prostředí dva řetězce.

Poznámka k upozorněníUpozornění

Ve výjimečných případech při běhu systému je udržování verze Unicode a vícebajtové verzi prostředí, tyto dvě prostředí verze nemusí odpovídat přesně.To je protože, ačkoliv libovolný jedinečný řetězec vícebajtových znaků mapuje jedinečný řetězec znaků Unicode, není nutně jedinečný mapování jedinečný řetězec znaků Unicode na řetězec vícebajtových znaků.Další informace naleznete v tématu _environ, _wenviron.

[!POZNÁMKA]

Rodiny _putenv a _getenv funkcí nejsou vláknově bezpečné._getenv může vrátit ukazatel řetězce, zatímco _putenv upravuje řetězec, což způsobí náhodná selhání.Ujistěte se, že volání těchto funkcí jsou synchronizována.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_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

Rutina

Požadované záhlaví

getenv

<stdlib.h>

_wgetenv

<stdlib.h> nebo <wchar.h>

Další informace o kompatibilitě naleznete v tématu Kompatibilita.

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

Viz také

Referenční dokumentace

Řízení procesů a prostředí

_putenv, _wputenv

Konstanty prostředí