【发布时间】:2012-09-24 01:13:27
【问题描述】:
我知道这种类型的问题被问了很多,但似乎没有一个答案有帮助。我在 Ubuntu Linux 中通过 setenv() 函数调用设置了一个环境变量。但是,该程序似乎没有使用此环境变量。如果我使用getenv(),它会得到正确的值,但程序的输出是错误的。但是,当我在 shell 中使用 export BLOCKSIZE=512 时,程序的输出是正确的。我没有从程序中产生不同的进程。下面只是我正在做的一个代码sn-p,它不是我的整个程序。
这有什么原因吗?
【问题讨论】:
-
你确定你的
flags[9]等于1吗?您的代码在 ideone (link) 上产生了预期的结果。 -
@tpar44 在这种情况下
setenv()的返回值是多少?我也可能建议一起删除条件,因为它只会使问题变得模糊。 -
谈论“预期结果”是没有帮助的,因为预期往往是不正确的。您需要清楚地说明您的期望和得到的。
-
'出于安全原因,这是设计使然。' ——不,尽管这可能是设计的偶然结果。更改子进程的环境变量会更改父进程的环境变量的实现会相当复杂——可能涉及分配给进程组的环境存储(在发明环境变量时不存在)——和用处不大。
标签: c environment-variables setenv getenv