%>
创建、修改或删除环境变量。 提供这些函数的更安全版本;请参阅 _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
、_exec
或 system
创建的任何新进程,这些新进程将获取由 _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
。
另请参阅
进程和环境控制
%>
%>