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