Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pobiera wartość z bieżącego środowiska. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz getenv_s, _wgetenv_s.
Ważne
Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
Parametry
varname
Nazwa zmiennej środowiskowej.
Wartość zwracana
Zwraca wskaźnik do wpisu tabeli środowiska zawierającego varnameelement . Nie można bezpiecznie zmodyfikować wartości zmiennej środowiskowej przy użyciu zwróconego wskaźnika. _putenv Użyj funkcji , aby zmodyfikować wartość zmiennej środowiskowej. Wartość zwracana jest NULL , jeśli varname nie zostanie znaleziona w tabeli środowiska.
Uwagi
Funkcja getenv wyszukuje listę zmiennych środowiskowych dla varnameelementu . getenv nie uwzględnia wielkości liter w systemie operacyjnym Windows. getenv i _putenv użyj kopii środowiska wskazywanej przez zmienną globalną _environ , aby uzyskać dostęp do środowiska. getenv działa tylko na strukturach danych dostępnych dla biblioteki czasu wykonywania, a nie w środowisku "segment" utworzonym dla procesu przez system operacyjny. W związku z tym programy używające argumentu envp do main lub wmain mogą pobierać nieprawidłowe informacje.
Jeśli varname jest NULLto , ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, ta funkcja ustawia errno wartość EINVAL i zwraca wartość NULL.
_wgetenv jest wersją szerokoznakową ; getenvargument i wartość zwracana _wgetenv są ciągami o szerokim znaku. Zmienna _wenviron globalna jest wersją o szerokim znaku _environ.
W programie MBCS (na przykład w programie SBCS ASCII) _wenviron początkowo NULL środowisko składa się z ciągów wielobajtowych znaków. Następnie przy pierwszym wywołaniu metody _wputenvlub przy pierwszym wywołaniu do _wgetenv środowiska (MBCS) już istnieje, tworzone jest odpowiednie środowisko ciągów szerokoznakowych, a następnie wskazywane przez _wenviron.
Podobnie w programie _environ Unicode (_wmain) początkowo środowisko NULL składa się z ciągów wieloznakowych. Następnie przy pierwszym wywołaniu metody _putenvlub przy pierwszym wywołaniu do getenv środowiska (Unicode) jest już tworzone odpowiednie środowisko MBCS, a następnie jest wskazywane przez _environ.
Gdy dwie kopie środowiska (MBCS i Unicode) istnieją jednocześnie w programie, system czasu wykonywania musi obsługiwać obie kopie, co powoduje wolniejszy czas wykonywania. Na przykład za każdym razem, gdy wywołasz _putenvmetodę , wywołanie _wputenv metody jest również wykonywane automatycznie, tak aby dwa ciągi środowiska odpowiadały.
Uwaga
W rzadkich przypadkach, gdy system czasu wykonywania utrzymuje zarówno wersję Unicode, jak i wielobajtową wersję środowiska, te dwie wersje środowiska mogą nie odpowiadać dokładnie. Dzieje się tak dlatego, że każdy unikatowy ciąg wielobajtowy mapuje na unikatowy ciąg Unicode, mapowanie z unikatowego ciągu Unicode na ciąg wielobajtowy nie musi być unikatowe. Aby uzyskać więcej informacji, zobacz _environ, _wenviron.
Uwaga
Rodziny _putenv funkcji i _getenv nie są bezpieczne wątkowo. _getenv może zwrócić wskaźnik ciągu podczas _putenv modyfikowania ciągu, powodując losowe błędy. Upewnij się, że wywołania tych funkcji są zsynchronizowane.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
|---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Aby sprawdzić lub zmienić wartość zmiennej środowiskowej TZ , użyj polecenia getenvi _putenv _tzset w razie potrzeby. Aby uzyskać więcej informacji na temat TZ, zobacz _tzset i _daylight, timezonei _tzname.
Wymagania
| Procedura | Wymagany nagłówek |
|---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> lub <wchar.h> |
Aby uzyskać więcej informacji 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 );
}
Original LIB variable is: C:\progra~1\devstu~1\vc\lib
New LIB variable is: c:\mylib;c:\yourlib
Zobacz też
Kontrola procesu i środowiska
_putenv, _wputenv
Stałe środowiskowe