PUTENV - Linux手册页

时间:2019-08-20 18:01:07  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2019-03-06

名称

putenv-更改或添加环境变量

语法

#include <stdlib.h>

int putenv(char *string);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

putenv():_ XOPEN_SOURCE
|| / * Glibc自2.19起:* / -_DEFAULT_SOURCE
|| / * Glibc版本

说明

putenv()函数添加或更改环境变量的值。参数字符串的形式为name = value。如果名称在环境中尚不存在,则将字符串添加到环境中。如果名称确实存在,那么环境中的名称值将更改为value。字符串所指向的字符串成为环境的一部分,因此更改字符串会更改环境。

返回值

putenv()函数成功返回零,如果发生错误则返回非零。如果发生错误,则设置errno来指示原因。

错误说明

ENOMEM
没有足够的空间来分配新环境。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
putenv()Thread safetyMT-Unsafe const:env

遵循规范

POSIX.1-2001,POSIX.1-2008,SVr4、4.3BSD。

备注

不需要重入putenv()函数,并且不需要glibc 2.0中的那个,但是glibc 2.1版本是。

从版本2.1.2开始,glibc实现符合SUSv2:使用了给putenv()的指针字符串。尤其是,此字符串成为环境的一部分。以后进行更改将改变环境。 (因此,使用自动变量作为参数来调用putenv(),然后在字符串仍然是环境的一部分的情况下从调用函数返回是错误的。)但是,glibc版本2.0至2.1.1不同:使用字符串。一方面,这会导致内存泄漏,另一方面,它会违反SUSv2。

像glibc 2.0一样,4.4BSD版本使用副本。

SUSv2从原型中删除了const,glibc 2.1.3也是如此。

GNU C库实现提供了非标准扩展。如果字符串不包含等号:

putenv("NAME");

然后将命名变量从调用者的环境中删除。

另外参见

clearenv(3),getenv(3),setenv(3),unsetenv(3),environ(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/