_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. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.