_putenv
, _wputenv
Создает, изменяет или удаляет переменные среды. Доступны более безопасные версии этих функций; see _putenv_s
, _wputenv_s
.
Внимание
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
Параметры
envstring
Определение строки среды.
Возвращаемое значение
Функции возвращают значение 0 в случае успешного выполнения или -1, если возникает ошибка.
Замечания
Функция _putenv
добавляет новые переменные среды или изменяет значения существующих переменных среды. Переменные среды определяют среду, в которой выполняется процесс (например, путь поиска по умолчанию для библиотек, связываемых с программой). _wputenv
— это версия _putenv
с расширенными символами; аргумент envstring
для _wputenv
— строка расширенных символов.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
Tchar.h рутина |
_UNICODE and _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
Аргумент envstring
должен быть указателем на строку вида varname=value_string
, где varname
— имя добавляемой или изменяемой переменной среды, а value_string
— значение переменной. Если переменная varname
уже существует в среде, ее значение заменяется значением value_string
; в противном случае в эту среду добавляются новая переменная varname
и ее значение value_string
. Переменную можно удалить из среды, указав пустой value_string
или другими словами, указав только varname
=.
_putenv
и _wputenv
влияет только на локальную среду текущего процесса. Их нельзя использовать для изменения среды уровня команд. То есть эти функции работают только с структурами данных, доступными для библиотеки времени выполнения. Они не работают с сегментом среды, созданным для процесса операционной системой. При завершении текущего процесса среда возвращается на уровень вызывающего процесса (в большинстве случаев — на уровень операционной системы). Однако измененную среду можно передать любым новым процессам, создаваемым функцией _spawn
, _exec
или system
, и эти новые процессы получают все новые элементы, добавленные функциями _putenv
и _wputenv
.
Не изменяйте запись среды напрямую: используйте _putenv
или _wputenv
измените ее. В частности, непосредственное освобождение элементов глобального массива _environ[]
может привести к адресации недопустимой памяти.
Функции _getenv
и _putenv
используют глобальную переменную _environ
для доступа к таблице среды; функции _wgetenv
и _wputenv
используют таблицу _wenviron
. _putenv
и _wputenv
может изменить значение _environ
и _wenviron
, таким образом, недопустимость аргумента _envp
main
и аргумента _wenvp
wmain
. Поэтому безопаснее использовать _environ
или _wenviron
получать доступ к информации о среде. Дополнительные сведения о связи и глобальных _putenv
переменных см. в разделе _environ
. _wenviron
_wputenv
Примечание.
Семейства функций _putenv
и _getenv
не являются потокобезопасными. Функция _getenv
может вернуть указатель строки, в то время как функция _putenv
изменяет строку, вызывая случайные сбои. Убедитесь, что вызовы этих функций синхронизированы.
Требования
Маршрут | Обязательный заголовок |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
Пример использования _putenv
см. в разделе . _wgetenv
getenv
См. также
Управление процессами и средой
getenv
, _wgetenv
_searchenv
, _wsearchenv