修改C程序中的环境变量

时间:2013-12-23 16:25:09

标签: c variables environment

是否可以在C程序中修改环境变量。像这样:

#include <stdlib.h>
int main( void )
{
    system( "echo $VARIABLE" );
    system( "VARIABLE=somethig");
    system( "echo $VARIABLE" );
    return 0;
}

2 个答案:

答案 0 :(得分:8)

使用setenv()putenv()。请注意putenv()的问题。

您编写的代码设置了通过调用system()生成的新shell解释器的环境。 <{1}}返回时,该环境将被丢弃。

答案 1 :(得分:2)

setenv(const char *name, const char *value, int overwrite);是您需要的功能。

e.g。 setenv("CONFIG_PATH", "/etc", 0);

来自man page

  

<强>描述
  setenv()函数将变量name添加到环境中   如果value尚不存在,则值为name。如果name   确实存在于环境中,然后将其值更改为value   如果覆盖非零;如果覆盖为零,那么value   name的{​​{1}}未更改。此函数可以复制指向的字符串   至namevalue(与putenv(3)相比)。