_putenv_s, _wputenv_s

Создает, изменяет или удаляет переменные среды. Эти функции являются версиями _putenv, _wputenv которые имеют улучшения безопасности, как описано в функциях безопасности в CRT.

Важно!

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

Синтаксис

errno_t _putenv_s(
   const char *varname,
   const char *value_string
);
errno_t _wputenv_s(
   const wchar_t *varname,
   const wchar_t *value_string
);

Параметры

varname
Имя переменной среды.

value_string
Значение, которое будет задано для переменной среды.

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

Возвращает 0 в случае успешного выполнения операции или код ошибки.

Условия ошибок

varname value_string Возвращаемое значение
NULL любое EINVAL
любое NULL EINVAL

Если возникает одно из условий ошибки, эти функции вызывают недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если продолжение выполнения разрешено, эти функции возвращают EINVAL и устанавливают для errno значение EINVAL.

Замечания

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

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

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

TCHAR.H Обычной _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tputenv_s _putenv_s _putenv_s _wputenv_s

varname — это имя добавляемой или изменяемой переменной среды, а value_string — это значение переменной. Если переменная varname уже существует в среде, ее значение заменяется значением value_string; в противном случае в среду добавляется новая переменная varname и ее значение value_string. Вы можете удалить переменную из среды, указав пустую строку (т "". е. ) для value_string.

_putenv_s и _wputenv_s влияет только на локальную среду текущего процесса. Их нельзя использовать для изменения среды уровня команд. Эти функции работают только в структурах данных, доступных библиотеке времени выполнения, а не в "сегменте" среды, созданном для процесса операционной системой. По завершении текущего процесса среда возвращается на уровень вызывающего процесса; в большинстве случаев это уровень операционной системы. Однако измененную среду можно передать любым новым процессам, созданным функциями _spawn, _exec или system, и эти новые процессы получат все новые элементы, добавленные функциями _putenv_s и _wputenv_s.

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

Функции getenv и _putenv_s используют глобальную переменную _environ для доступа к таблице среды; функции _wgetenv и _wputenv_s используют таблицу _wenviron. Функции _putenv_s и _wputenv_s могут изменить значение _environ и _wenviron и тем самым сделать недействительным аргумент envp для main и аргумент _wenvp для wmain. Поэтому безопаснее использовать _environ или _wenviron получать доступ к информации о среде. Дополнительные сведения о связях и глобальных _putenv_s переменных см. в разделе . _wenviron_environ_wputenv_s

Примечание.

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

Требования

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

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

Пример

Пример, показывающий, как использовать _putenv_s, см. в разделе . _wgetenv_sgetenv_s

См. также

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