GETENV - Linux手册页

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

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

getenv,secure_getenv-获取环境变量

语法

#include <stdlib.h>

char *getenv(const char *name);

char *secure_getenv(const char *name);

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

secure_getenv():_GNU_SOURCE

说明

getenv()函数搜索环境列表以查找环境变量名称,并返回指向相应值字符串的指针。

GNU特定的secure_getenv()函数与getenv()相似,不同之处在于在需要"安全执行"的情况下它返回NULL。加载由调用进程运行的程序时,如果满足以下条件之一,则需要安全执行:

*
进程的有效用户ID与实际用户ID不匹配,或者进程的有效组ID与实际用户ID不匹配(通常是执行set-user-ID或set-group-ID程序的结果);
*
在可执行文件上设置了有效功能位;要么
*
该过程具有非空的允许功能集。

如果由某些Linux安全模块触发,也可能需要安全执行。

secure_getenv()函数旨在用于通用库中,以避免在set-user-ID或set-group-ID程序意外信任环境时可能发生的漏洞。

返回值

getenv()函数返回指向环境中值的指针;如果不匹配,则返回NULL。

版本

secure_getenv()首次出现在glibc 2.17中。

属性

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

InterfaceAttributeValue
getenv(),secure_getenv()Thread safetyMT-Safe env

遵循规范

getenv():POSIX.1-2001,POSIX.1-2008,C89,C99,SVr4、4.3BSD。

secure_getenv()是GNU扩展。

备注

环境列表中的字符串的格式为name = value。

通常实现的方法是,getenv()返回指向环境列表中字符串的指针。调用者必须注意不要修改此字符串,因为那样会改变进程的环境。

getenv()的实现不需要重入。 getenv()返回值指向的字符串可以静态分配,并且可以通过后续调用getenv(),putenv(3),setenv(3)或unsetenv(3)进行修改。

secure_getenv()的"安全执行"模式由从内核传递到用户空间的辅助向量中包含的AT_SECURE标志控制。

另外参见

clearenv(3),getauxval(3),putenv(3),setenv(3),unsetenv(3),功能(7),环境(7)

出版信息

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