getenv, _wgetenv
Pobieranie wartości z bieżącego środowiska.Bezpieczniejsze wersje te funkcje są dostępne; see getenv_s, _wgetenv_s.
Waż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.
Przestroga |
---|
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