【发布时间】:2015-04-28 18:15:02
【问题描述】:
我已经使用以下命令设置了一个环境变量:
QUERY_STRING='This is my query string'
这是我的程序:
#include <stdio.h>
#include <stdlib.h>
void main (int argc, char *argv[])
{
printf("%s\n", getenv("QUERY_STRING"));
}
这就是我运行程序时得到的结果:
mantis@toboggan /testing/cgi_download/temp $ echo $QUERY_STRING; ./a.out
This is my query string.
Segmentation fault
mantis@toboggan /testing/cgi_download/temp $
看起来好像没有设置环境变量,所以getenv() 返回一个NULL。
我真的不知道为什么这不起作用。 $PATH 等其他变量可用。如何设置此环境变量以便我的程序可以使用它?
uname -a:
Linux toboggan 3.18.7+ #755 PREEMPT Thu Feb 12 17:14:31 GMT 2015 armv6l GNU/Linux
【问题讨论】:
-
注意
main应该返回int,而不是void。 -
@ace:当您减少代码以仅包含错误时不会!但我明白你来自哪里。 ;)
-
错误。 C 标准规定
main应该返回int。见stackoverflow.com/a/207992/3488231 -
@ace:如果我将它从
void main更改为int main,那么我的程序将需要另一行代码,因此不会简化为只显示错误。 -
你有
export编辑过吗?要使子进程可以使用环境变量,您必须将其导出。
标签: c linux raspberry-pi environment-variables getenv