_putenv_wputenv

创建、修改或删除环境变量。 提供这些函数的更安全版本;请参阅 _putenv_s_wputenv_s

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数

语法

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_execsystem 创建的任何新进程,这些新进程将获取由 _putenv_wputenv 添加的所有新项。

不要直接更改环境条目:而是使用 _putenv_wputenv 更改它。 具体而言,直接释放 _environ[] 全局数组的元素可能会导致寻址无效的内存。

_getenv_putenv 使用全局变量 _environ 来访问环境表;_wgetenv_wputenv 使用 _wenviron_putenv_wputenv 可能更改 _environ_wenviron 的值,因此,会使 main_envp 参数和 wmain_wenvp 参数无效。 因此,使用 _environ_wenviron 来访问环境信息更安全。 若要详细了解 _putenv_wputenv 与全局变量的关系,请参阅 _environ_wenviron

注意

_putenv_getenv 系列的函数不是线程安全函数。 当 _putenv 修改字符串时,_getenv 可能会返回字符串指针,从而导致随机性失败。 确保对这些函数的调用同步。

要求

例程 必需的标头
_putenv <stdlib.h>
_wputenv <stdlib.h><wchar.h>

有关兼容性的详细信息,请参阅 兼容性

示例

有关如何使用 _putenv 的示例,请参阅 getenv_wgetenv

另请参阅

进程和环境控制
getenv_wgetenv
_searchenv_wsearchenv