Поделиться через


_putenv, _wputenv

Создает, изменяет или удаляет переменные среды. Доступны более безопасные версии этих функций; see _putenv_s, _wputenv_s.

Внимание

Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

int _putenv(
   const char *envstring
);
int _wputenv(
   const wchar_t *envstring
);

Параметры

envstring
Определение строки среды.

Возвращаемое значение

Функции возвращают значение 0 в случае успешного выполнения или -1, если возникает ошибка.

Замечания

Функция _putenv добавляет новые переменные среды или изменяет значения существующих переменных среды. Переменные среды определяют среду, в которой выполняется процесс (например, путь поиска по умолчанию для библиотек, связываемых с программой). _wputenv — это версия _putenvс расширенными символами; аргумент envstring для _wputenv — строка расширенных символов.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

Tchar.h рутина _UNICODE and _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tputenv _putenv _putenv _wputenv

Аргумент envstring должен быть указателем на строку вида varname=value_string, где varname — имя добавляемой или изменяемой переменной среды, а value_string — значение переменной. Если переменная varname уже существует в среде, ее значение заменяется значением value_string; в противном случае в эту среду добавляются новая переменная varname и ее значение value_string. Переменную можно удалить из среды, указав пустой value_stringили другими словами, указав только varname=.

_putenv и _wputenv влияет только на локальную среду текущего процесса. Их нельзя использовать для изменения среды уровня команд. То есть эти функции работают только с структурами данных, доступными для библиотеки времени выполнения. Они не работают с сегментом среды, созданным для процесса операционной системой. При завершении текущего процесса среда возвращается на уровень вызывающего процесса (в большинстве случаев — на уровень операционной системы). Однако измененную среду можно передать любым новым процессам, создаваемым функцией _spawn, _exec или system, и эти новые процессы получают все новые элементы, добавленные функциями _putenv и _wputenv.

Не изменяйте запись среды напрямую: используйте _putenv или _wputenv измените ее. В частности, непосредственное освобождение элементов глобального массива _environ[] может привести к адресации недопустимой памяти.

Функции _getenv и _putenv используют глобальную переменную _environ для доступа к таблице среды; функции _wgetenv и _wputenv используют таблицу _wenviron. _putenv и _wputenv может изменить значение _environ и _wenviron, таким образом, недопустимость аргумента _envp main и аргумента _wenvp wmain. Поэтому безопаснее использовать _environ или _wenviron получать доступ к информации о среде. Дополнительные сведения о связи и глобальных _putenv переменных см. в разделе _environ. _wenviron_wputenv

Примечание.

Семейства функций _putenv и _getenv не являются потокобезопасными. Функция _getenv может вернуть указатель строки, в то время как функция _putenv изменяет строку, вызывая случайные сбои. Убедитесь, что вызовы этих функций синхронизированы.

Требования

Маршрут Обязательный заголовок
_putenv <stdlib.h>
_wputenv <stdlib.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

Пример использования _putenvсм. в разделе . _wgetenvgetenv

См. также

Управление процессами и средой
getenv, _wgetenv
_searchenv, _wsearchenv