在Linux环境下编程,有时我们需要获取一些环境变量的值,例如,登录用户名,用户主目录,PATH路径,系统语言等,本篇记录使用getenv,secure_getenv函数获取相应变量的值。
开发环境 Ubuntu1804
首先我们可以通过env命令查看环境变量的相关设置值
1.getenv函数根据环境变量获取对应的值
函数名 | getenv |
相关函数 | secure_getenv |
表头文件 | #include<stdlib.h> |
函数定义 | char *getenv(const char *name); |
函数说明 | 根据环境获取该环境变量的值,参数name是变量名,如果变量名不存在,返回值为nullptr |
返回值 | 返回变量值的指针 |
示例:
#include <iostream>
#include <stdio.h>
#include <string.h> //strcpy
#include <stdlib.h> //getenv secure_getenv
using namespace std;
int main()
{
char buf[200];
char *home = getenv("HOME"); //用户主目录
printf("home=========%s\n", home);
strcpy(buf, home);
printf("buf==========%s\n", buf);
char *lang = getenv("LANG"); //系统语言编码
printf("lang=========%s\n", lang);
char *username = getenv("USERNAME"); //用户名
printf("username=====%s\n", username);
char *user = getenv("USER"); //用户
printf("user=========%s\n", user);
char *pwd = getenv("PWD"); //当前用户主目录
printf("pwd==========%s\n", pwd);
char *logname = getenv("LOGNAME"); //登录名
printf("logname======%s\n", logname);
char *path = getenv("PATH"); //path路径
printf("home=========%s\n", path);
char *shell = getenv("SHELL"); //SHELL目录
printf("shell========%s\n", shell);
char *aa = getenv("aa"); //不存在的变量
printf("aa========%s\n", aa);
cout << "Hello World!" << endl;
return 0;
}
运行:
2.getenv函数在安全环境下搜索环境列表以查找环境变量名
函数名 | secure_getenv |
相关函数 | getenv |
表头文件 | #include<stdlib.h> |
函数定义 | char *secure_getenv(const char *name); |
函数说明 | secure_getenv()函数与getenv()类似,除了在需要“安全执行”的情况下,它返回nullptr |
返回值 | 返回变量值的指针 |
示例:
#include <iostream>
#include <stdio.h>
#include <string.h> //strcpy
#include <stdlib.h> //getenv secure_getenv
using namespace std;
int main()
{
char buf[200];
char *home = secure_getenv("HOME"); //用户主目录
printf("home=========%s\n", home);
strcpy(buf, home);
printf("buf==========%s\n", buf);
char *lang = secure_getenv("LANG"); //系统语言编码
printf("lang=========%s\n", lang);
char *username = secure_getenv("USERNAME"); //用户名
printf("username=====%s\n", username);
char *user = secure_getenv("USER"); //用户
printf("user=========%s\n", user);
char *pwd = secure_getenv("PWD"); //当前用户主目录
printf("pwd==========%s\n", pwd);
char *logname = secure_getenv("LOGNAME"); //登录名
printf("logname======%s\n", logname);
char *path = secure_getenv("PATH"); //path路径
printf("home=========%s\n", path);
char *shell = secure_getenv("SHELL"); //SHELL目录
printf("shell========%s\n", shell);
char *aa = secure_getenv("aa"); //不存在的变量
printf("aa========%s\n", aa);
cout << "Hello World!" << endl;
return 0;
}
运行结果: