_putenv, _wputenv
Создает, изменяет или удаляет переменные среды. Существуют более безопасные версии этих функций; см. раздел _putenv_s, _wputenv_s.
Важно!
Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
Параметры
- envstring
Определение строки среды.
Возвращаемое значение
Возвращает 0 в случае успешного выполнения или –1 в случае ошибки.
Заметки
Функция _putenv добавляет новые переменные среды или изменяет значения существующих переменных среды. Переменные среды определяют среду, в которой выполняется процесс (например, путь поиска по умолчанию для библиотек, связываемых с программой). _wputenv — двухбайтовая версия _putenv; аргумент envstring для _wputenv - строка двухбайтовых знаков.
Универсальное текстовое сопоставление функций
Подпрограмма Tchar.h |
_UNICODE и _MBCS не определены |
_MBCS определено |
_UNICODE определено |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
Аргумент envstring должен быть указателем на строку вида varname=string, где varname — имя переменной среды, добавляемой или измененяемой, а string — значение переменной. Если varname уже является частью среды, ее значение заменяется string; в противном случае новая переменная varname и ее значение string добавляются в эту среду. Можно удалить переменную среды, указав пустой 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 и _wputenv с глобальными переменными см. _environ, _wenviron.
Примечание
Семейства функций _putenv и _getenv не являются потокобезопасными._getenv может вернуть указатель строки, в то время как _putenv изменяет строку, вызывая случайные сбои.Убедитесь, что вызовы этих функций синхронизированы.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
Пример использования _putenv, см. в getenv, _wgetenv.
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.