Linux C中environ 变量是一个char** 类型,存储着系统的环境变量。
/*default environment variable defined in system-level*/
char **environ;
这个变量是声明在文件unistd.h头文件中。可以通过#include
#include
#include
int main()
{
int i = 0;
while(environ[i] != NULL){
i++;
printf("%s \n",environ[i]);
}
return 0;
}
编译,并运行后结果
root@kali:/home/RicardoWork/codeTest/Test_environ# gcc test-environ.cpp -o test
root@kali:/home/RicardoWork/codeTest/Test_environ# ./test
XDG_MENU_PREFIX=gnome-
LANG=en_US.UTF-8
GDM_LANG=en_US.UTF-8
DISPLAY=:1
COLORTERM=truecolor
USERNAME=root
XDG_VTNR=2
SSH_AUTH_SOCK=/run/user/0/keyring/ssh
S_COLORS=auto
XDG_SESSION_ID=2
当然对于双重指针的访问,还可以通过其他方式,例如:
#include
#include
int main()
{
while(*environ){
environ++;
printf("%s \n",*environ);
}
return 0;
}
知识点:environ参数,该参数用于存储程序的环境列表。此区域可存储的字节数有上限要求,SUSv3规定使用ARG_MAX常量(定义于
所以如果要保存一个环境变量,可以先申请一块内存,这个内存的大小应该为
sysconf(_SC_ARG_MAX) * sizeof(char *)