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


_putenv_s, _wputenv_s

Создает, изменяет или удаляет переменные среды. Здесь представлены версии _putenv, _wputenv с усовершенствованной безопасностью, как описано в разделе Функции безопасности в CRT.

Важно!

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

errno_t _putenv_s(
   const char *name,
   const char *value 
);
errno_t _wputenv_s(
   const wchar_t *name,
   const wchar_t *value
);

Параметры

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

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

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

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

Условия возникновения ошибки

name

value

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

NULL

any

EINVAL

any

NULL

EINVAL

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

Заметки

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

Универсальное текстовое сопоставление функций

Подпрограмма TCHAR.H

_UNICODE & _MBCS не определены

_MBCS определено

_UNICODE определено

_tputenv_s

_putenv_s

_putenv_s

_wputenv_s

name - это имя добавляемой или изменяемой переменной среды, а value- это значение переменной. Если name уже является частью среды, ее значение заменяется value; в противном случае новая переменная name и ее значение value добавляются в эту среду. Можно удалить переменную среды, указав пустую строку (""), для value.

_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 и _wputenv_s с глобальными переменным см. в разделе _environ, _wenviron.

Примечание

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

Требования

Подпрограмма

Обязательный заголовок

_putenv_s

<stdlib.h>

_wputenv_s

<stdlib.h> или <wchar.h>

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

Пример

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

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.

См. также

Ссылки

Управление процессами и средой

getenv, _wgetenv

_searchenv, _wsearchenv