_putenv
, _wputenv
Tworzy, modyfikuje lub usuwa zmienne środowiskowe. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz _putenv_s
, _wputenv_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
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
Parametry
envstring
Definicja ciągu środowiskowego.
Wartość zwracana
Jeśli funkcja zwróci wartość 0, lub -1, jeśli wystąpi błąd.
Uwagi
Funkcja _putenv
dodaje nowe zmienne środowiskowe lub modyfikuje wartości istniejących zmiennych środowiskowych. Zmienne środowiskowe definiują środowisko, w którym jest wykonywany proces (na przykład domyślna ścieżka wyszukiwania bibliotek, które mają być połączone z programem). _wputenv
jest wersją szerokoznakową ; _putenv
argument to envstring
_wputenv
ciąg o szerokim znaku.
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 and _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
envstring
Argument musi być wskaźnikiem do ciągu formularza varname=value_string
, gdzie varname
jest nazwą zmiennej środowiskowej, która ma zostać dodana lub zmodyfikowana i value_string
jest wartością zmiennej. Jeśli varname
jest już częścią środowiska, jego wartość jest zastępowana przez value_string
; w przeciwnym razie nowa varname
zmienna i jej value_string
wartość są dodawane do środowiska. Możesz usunąć zmienną ze środowiska, określając pustą value_string
wartość , lub innymi słowy, określając tylko varname
=.
_putenv
i _wputenv
dotyczy tylko środowiska lokalnego bieżącego procesu; nie można ich używać do modyfikowania środowiska na poziomie polecenia. Oznacza to, że te funkcje działają tylko na strukturach danych dostępnych dla biblioteki czasu wykonywania. Nie działają one w segmencie środowiska utworzonym dla procesu przez system operacyjny. Po zakończeniu bieżącego procesu środowisko powraca do poziomu procesu wywołującego (w większości przypadków poziomu systemu operacyjnego). Zmodyfikowane środowisko można jednak przekazać do wszystkich nowych procesów utworzonych przez _spawn
, _exec
lub system
, a te nowe procesy uzyskują wszystkie nowe elementy dodane przez _putenv
program i _wputenv
.
Nie zmieniaj wpisu środowiska bezpośrednio: zamiast tego użyj _putenv
polecenia lub _wputenv
zmień go. W szczególności bezpośrednie zwalnianie elementów tablicy globalnej _environ[]
może prowadzić do rozwiązania nieprawidłowej pamięci.
_getenv
i _putenv
użyj zmiennej _environ
globalnej, aby uzyskać dostęp do tabeli środowiska; _wgetenv
i _wputenv
użyj ._wenviron
_putenv
i _wputenv
może zmienić wartość _environ
i _wenviron
, w związku z tym unieważniając _envp
argument na main
i argument na _wenvp
wmain
. W związku z tym bezpieczniej jest używać _environ
informacji o środowisku lub _wenviron
uzyskiwać do nich dostęp. Aby uzyskać więcej informacji na temat relacji zmiennych globalnych _putenv
i _wputenv
, 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.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Aby zapoznać się z przykładem używania programu _putenv
, zobacz getenv
, _wgetenv
.
Zobacz też
Kontrola procesu i środowiska
getenv
, _wgetenv
_searchenv
, _wsearchenv