每一个程序都有一个环境表。环境表里存放着各种环境变量,这些环境变量就像是全局变量一样。
环境表是一个字符指针数组,其中每个字符串指针都包含一个以NULL结束的C字符串的地址。
这个字符串的格式一般为“名字=值”。可以通过全局变量environ变量来直接访问这个字符串数组。
#include <stdlib.h>
extern char **environ;
打印环境变量:
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
int main()
{
char **env = environ;
while(*env){
printf("%s\n", *env);
env++;
}
return 0;
}
部分输出,屏蔽部分信息:
XDG_SESSION_ID=21987
HOSTNAME=iz2ze0kxxxxxxxxxmyc5itdcz
TERM=xterm
SHELL=/bin/bash
HISTSIZE=10000
.
.
.
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=xxxxxxxxxxxxxxxxxxxxxx
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=./main
OLDPWD=/root/1/1-4