Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает, изменяет или удаляет переменные среды. Эти функции являются версиями _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_sgetenv_s
См. также
Управление процессами и средой
getenv, _wgetenv
_searchenv, _wsearchenv