Udostępnij za pośrednictwem


getenv, _wgetenv

Pobieranie wartości z bieżącego środowiska.Bezpieczniejsze wersje te funkcje są dostępne; see getenv_s, _wgetenv_s.

Ważna uwagaWażne

Ten interfejs API nie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsługiwane przez /ZW.

char *getenv( 
   const char *varname 
);
wchar_t *_wgetenv( 
   const wchar_t *varname 
);

Parametry

  • varname
    Nazwa zmiennej środowiskowej.

Wartość zwracana

Zwraca wskaźnik do środowiska tabeli wpisu zawierającego varname.Nie jest bezpieczne, aby zmodyfikować wartość zmiennej środowiskowej, przy użyciu zwrócony wskaźnik.Użycie _putenv funkcji, aby zmodyfikować wartość zmiennej środowiskowej.Wartość zwracana jest NULL Jeśli varname nie znajduje się w tabeli środowiska.

Uwagi

getenv Funkcja przeszukuje listę zmiennych środowiskowych dla varname.getenvnie jest uwzględniana wielkość liter, w systemie operacyjnym Windows.getenvi _putenv używanie kopii środowiska wskazywanej przez zmienna globalna _environ aby uzyskiwać dostęp do środowiska.getenvdziała tylko na dostęp do biblioteki uruchomieniowej struktur danych, a nie na środowisko naturalne "segment" utworzony dla procesu przez system operacyjny.W związku z tym, programy używające envp argument główne lub wmain może gromadzić informacje nieprawidłowe.

Jeśli varname jest NULL, funkcja ta wywołuje funkcję obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ta funkcja ustawia errno do EINVAL i zwraca NULL.

_wgetenvjest ona szerokich znaków do getenv; wartość argumentów i _wgetenv są ciągami szerokich znaków._wenviron Zmienna globalna jest ona szerokich znaków do _environ.

W programie MBCS (na przykład w programie SBCS ASCII) _wenviron jest początkowo NULL ponieważ środowiska składa się z ciągów znaków wielobajtowych.Następnie na pierwszym wywołaniu _wputenv, lub na pierwsze wezwanie do _wgetenv Jeśli środowisku (MBCS) już istnieje, odpowiedniego środowiska dla łańcucha szerokich znaków jest tworzony i następnie jest wskazywana przez _wenviron.

Podobnie w Unicode (_wmain) program, _environ jest początkowo NULL ponieważ środowiska składa się z ciągów szerokich znaków.Następnie na pierwszym wywołaniu _putenv, lub na pierwsze wezwanie do getenv po środowisku (Unicode) już istnieje, odpowiednie środowisko MBCS zostanie utworzona i następnie jest wskazywana przez _environ.

W przypadku dwie kopie środowiska (MBCS Unicode) istnieją jednocześnie w programie, działającego systemu musi usunąć obie kopie, skutkujące wolniejszy czas wykonania.Na przykład, gdy wywołujemy _putenv, wywołanie _wputenv jest również wykonywane automatycznie, tak aby odpowiadały ciągów środowiskowych dwa.

Informacje dotyczące przestrogiPrzestroga

W rzadkich przypadkach gdy system wykonawczy jest utrzymanie zarówno wersję Unicode, jak i wielobajtowych wersją środowiska naturalnego, te wersje dwóch środowiska mogą nie odpowiadać dokładnie.Dlatego, chociaż dowolny unikatowy ciąg znaków wielobajtowych mapowany na unikatowy ciąg Unicode, mapowanie unikatowy ciąg Unicode na ciąg znaków wielobajtowych nie jest koniecznie unikatowy.Aby uzyskać więcej informacji, zobacz zmienna _environ, _wenviron.

[!UWAGA]

_putenv i _getenv rodziny funkcji nie są wątków._getenvmógł zwrócić wskaźnik ciąg podczas _putenv modyfikuje się ciągiem znaków, co powoduje losowe błędy.Upewnij się, że wywołania tych funkcji są synchronizowane.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tgetenv

getenv

getenv

_wgetenv

Aby sprawdzić lub zmienić wartość TZ użycie zmiennej, środowiska getenv, _putenv i _tzset to konieczne.Aby uzyskać więcej informacji o TZ, zobacz _tzset i _daylight, strefa czasowa i _tzname.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

getenv

<stdlib.h>

_wgetenv

<stdlib.h> lub <wchar.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

// 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 );
}
  

Odpowiednik w programie .NET Framework

System::Environment::GetEnvironmentVariable

Zobacz też

Informacje

Proces i kontroli środowiska

_putenv, _wputenv

Stałe środowiska