在 Linux C
中我们可以通过以下两个函数获得指定名称的环境变量:
#include <stdlib.h>
char *getenv(const char *name);
char *secure_getenv(const char *name);
但有时候我们想一次性获得所有环境变量,并依次处理,用来覆盖我们程序中的某些配置信息,这在配置信息较多的情况下比较有用,尤其是当配置信息形成了一个数组时,这样处理,可以简化后续新增配置的工作。
在 Linux C
中我们可以通过 environ
全局变量 来获取所有环境变量,environ
是一个数组,它的每个元素是一个 char *
指针,用来指向某个环境变量,且数组的最后一个指针为 NULL
,环境变量的内容为 "name=value"
形式。
使用示例如下所示:
#include <stdio.h>
extern char **environ;
int main(void)
{
char **p = environ;
while (*p) {
printf("%s\n", *p);
// Do something
++p;
}
return 0;
}
代码运行结果如下所示:
$ gcc -o main main.c
$ export MY_ENV_1=123
$ ./main
SHELL=/bin/bash
...
LOGNAME=zhoumin
...
MY_ENV_1=123
...
HOME=/home/zhoumin
...