getenv, _wgetenv
Pobiera wartość z bieżącego środowiska.Bardziej bezpieczne wersje tych funkcji są dostępne w getenv_s, _wgetenv_s.
Ważne |
---|
Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsł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 Zapis zawierający 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 można odnaleźć w tabeli środowiska.
Uwagi
getenv funkcja przeszukuje listę zmiennych środowiskowych dla varname.getenv nie uwzględnia wielkości liter w systemie operacyjnym Windows.getenvi _putenv użyć kopii środowiska wskazywanego przez zmiennej globalnej _environ do dostępu do środowiska.getenvdziała tylko na dostęp do biblioteki wykonawczej struktury danych, a nie na środowisko "segment" dla procesu utworzonych przez system operacyjny.W związku z tym, programy używające envp argument główne lub WMA w systemie może pobrać nieprawidłowe informacje.
Jeśli varname jest NULL, ta funkcja wywołuje program obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, funkcja ta ustawia errno jako EINVAL i zwraca NULL.
_wgetenvjest to wersja szeroko charakter getenv; wartość argumentów i _wgetenv są ciągi znaków wide._wenviron zmienne globalne jest wersją szerokich znaków _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 pierwsze wywołanie funkcji _wputenv, lub na pierwsze wywołanie funkcji _wgetenv Jeśli środowisku (MBCS) już istnieje, odpowiedniego środowiska wide znakowy ciąg 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 znaków wide.Następnie na pierwsze wywołanie funkcji _putenv, lub na pierwsze wywołanie funkcji getenv Jeśli już istnieje w środowisku (Unicode), odpowiednie środowisko MBCS jest tworzony i następnie jest wskazywana przez _environ.
Gdy w programie jednocześnie istnieją dwie kopie środowiska (MBCS Unicode), działającego systemu muszą utrzymywać obie kopie, skutkujące wolniejszy czas wykonania.Na przykład, gdy wywołanie _putenv, wywołanie _wputenv również jest wykonywany automatycznie, tak, aby odpowiadać ciągów środowiska dwa.
Przestroga |
---|
W rzadkich przypadkach gdy system wykonawczy jest utrzymanie zarówno wersja Unicode, jak i wielobajtowych wersji środowiska, wersje te dwa środowiska mogą nie odpowiadać dokładnie.Dlatego, chociaż dowolny unikatowy ciąg znaków wielobajtowych mapowany na unikatowy ciąg Unicode, mapowanie z unikatowego ciągu Unicode na ciąg znaków wielobajtowych nie jest koniecznie unikatowy.Aby uzyskać więcej informacji, zobacz _environ, _wenviron. |
[!UWAGA]
_putenv i _getenv rodziny funkcji nie są bezpieczne od wątków._getenv może zwracać wskaźnik ciągu podczas gdy _putenv modyfikuje ciąg, powodując błędy losowe.Upewnij się, że wywołania tych funkcji są synchronizowane.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE & _MBCS nie zdefiniowano |
_MBCS zdefiniowano |
_UNICODE zdefiniowany |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Aby sprawdzić lub zmienić wartość TZ użycie zmiennej, środowiska getenv, _putenv i _tzset w razie potrzeby.Aby uzyskać więcej informacji o TZ, zobacz _tzset i _daylight, strefa czasowa i _tzname.
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> lub <wchar.h> |
Dodatkowe informacje o zgodności – zobacz: Zgodność.
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
zmienna środowiskowa pobierania systemu