_putenv_s, _wputenv_s
创建,修改或移除环境变量。 这些是 _putenv, _wputenv 的版本,但具有安全增强功能,如 CRT中的安全功能所述。
重要
此 API 不能在 Windows 运行时执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW。
errno_t _putenv_s(
const char *name,
const char *value
);
errno_t _wputenv_s(
const wchar_t *name,
const wchar_t *value
);
参数
name
环境变量名称。value
设置环境变量的值。
返回值
返回 0;如果成功或错误代码。
错误状态
name |
value |
返回值 |
---|---|---|
NULL |
any |
EINVAL |
any |
NULL |
EINVAL |
如果其中一个错误状态,当调用这些功能无效参数处理程序,如 参数验证所述。 如果执行允许继续,这些函数返回 EINVAL 并将 errno 到 EINVAL。
备注
_putenv_s 功能添加新环境变量或修改现有环境变量的值。 环境变量定义过程执行环境 (例如,与程序可以将链接库的默认值查找路径)。 _wputenv_s 是 _putenv_s的宽字符版本;为 _wputenv_s 的 envstring 参数是宽字符字符串。
一般文本例程映射
TCHAR.H 实例 |
未定义的_UNICODE & _MBCS |
定义的_MBCS |
定义的_UNICODE |
---|---|---|---|
_tputenv_s |
_putenv_s |
_putenv_s |
_wputenv_s |
name 是要添加的环境变量的名称或修改和 value 是易失值。 如果 name 已经属于该环境的一部分,其值。value替换;否则,变量新 name 及其 value 添加到该环境。 您可以从该环境移除变量通过指定空字符串 (即" ") value的。
_putenv_s 和 _wputenv_s 影响是本地到当前进程仅环境;不能将这些修改命令级环境。 这些功能在可访问的。运行库而不是环境“段”操作系统进程创建的数据结构只运行。 在当前进程时停止,环境还原到调用级别处理,在大多数情况下是该操作系统级别。 但是,修改环境可传递到由 _spawn、_exec或 system创建的任何更新过程,并且,这些更新过程获取 _putenv_s 和 _wputenv_s添加的所有新项目。
不要直接更改环境项;相反,应使用 _putenv_s 或 _wputenv_s 更改它。 具体而言,直接释放 _environ[] 全局数组的元素可能会导致无效内存解决。
getenv 和 _putenv_s 使用全局变量 _environ 访问环境表;_wgetenv 和 _wputenv_s 使用 _wenviron。 _putenv_s 和 _wputenv_s 能更改 _environ 和 _wenviron的值从而无效 envp 参数。main 和 _wenvp 参数。wmain。 因此,使用 _environ 或 _wenviron 访问环境信息会更加安全。 有关 _putenv_s 和 _wputenv_s 的更多信息关系全局变量,请参见 _environ, _wenviron。
备注
功能 _putenv_s 和 _getenv_s 系列不是线程安全的。_getenv_s 可以返回字符串指针,当 _putenv_s 修改该字符串时从而导致随机崩溃。确保对这些函数同步。
要求
实例 |
必需的标头 |
---|---|
_putenv_s |
<stdlib.h> |
_wputenv_s |
<stdlib.h> 或 <wchar.h> |
有关其他的兼容性信息,请参见 兼容性。
示例
有关演示如何使用 _putenv_s,请参见 getenv_s, _wgetenv_s的示例。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例。