【发布时间】:2011-07-21 02:46:58
【问题描述】:
我有一个 C 程序,它打印每个环境变量,其名称由标准输入给出。 它会打印 $PATH、$USER 等变量,但看不到我在 Linux shell 中定义的环境变量... 例如,在 bash 中我定义 my=4,当我输入“my”时,我希望程序返回 4。
int main () {
char * key = (char * )malloc(30);
scanf("%s", key);
if(getenv(key) != NULL)
printf("%s\n", getenv(key));
else
printf("NULL\n");
return 0;
}
我可以做些什么来改善 getenv 的结果? 我希望它向我展示所有环境变量以及 Linux shell 的所有继承。 谢谢。。
【问题讨论】:
-
不需要
malloc一个固定长度的块。只需char key[30]就可以了。 (顺便说一句,你永远不会free块。) -
@larsmans:感谢您的观察,这只是一个匆忙的例子,我需要在更广泛的背景下使用 getenv :)