有没有办法枚举环境变量并使用C?
检索值答案 0 :(得分:28)
查看environ
全局变量。
extern char **environ;
可能会在unistd.h
中定义(请查看上面的environ (5)
手册页。)
这是我写的一个小代码演示:
#include <stdio.h>
extern char **environ;
int main()
{
for (char **env = environ; *env; ++env)
printf("%s\n", *env);
}
以下是如何使用它:
matt@stanley:~/Desktop$ make enumenv CFLAGS=-std=c99
cc -std=c99 enumenv.c -o enumenv
matt@stanley:~/Desktop$ ./enumenv
ORBIT_SOCKETDIR=/tmp/orbit-matt
SSH_AGENT_PID=1474
TERM=xterm
SHELL=/bin/bash
... (so forth)
答案 1 :(得分:9)
环境信息可以作为额外参数传递给main。我不知道它是否合规,但它肯定有效(在Ubuntu上测试)。只需定义额外参数及其由NULL指针终止的char指针数组。以下将打印出该批次。
#include <stdio>
int main(int argc, char *argv[], char *envp[])
{
int index = 0;
while (envp[index])
printf("%s\n", envp[index++];
}
答案 2 :(得分:2)
第127页的“Linux编程接口”一书中有一个演示。
清单6-3:显示流程环境 ------------------------------------------------ PROC / display_env.c
#include "tlpi_hdr.h"
extern char **environ;
int
main(int argc, char *argv[])
{
char **ep;
for (ep = environ; *ep != NULL; ep++)
puts(*ep);
exit(EXIT_SUCCESS);
}