_putenv_s
, , _wputenv_s
_tputenv_s
Создает, изменяет или удаляет переменные среды. Эти функции являются версиями _putenv
, _wputenv
которые имеют улучшения безопасности, как описано в функциях безопасности в CRT.
Внимание
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Дополнительные сведения см. в _tputenv_s
сопоставлениях функций универсального текста.
Синтаксис
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
других столбцах в зависимости от набора символов, определенного во время компиляции.
Функция 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_s
getenv_s
См. также
Управление процессами и средой
getenv
, _wgetenv
_searchenv
, _wsearchenv