2014-05-12 26 views
-1

我想setenv一个新的environement变量setenv()。我可以使用envp setenv()吗?

但我noticided是SETENV()函数来设置我的新environement变量只有当我使用environement“外部字符** ENVIRON”

但我想使用的main()的说法:“字符* * envp”。

下面是我在envp中设置的代码,但是如果您运行该代码,它将不会在envp中设置。

但是,如果我使用const char ** environ它的作品。

任何想法?

#include <stdlib.h> 
#include <stdio.h> 

int  main(int ac, char **av, char **envp) 
{ 
    int i; 

    i = 0; 
    setenv("NEW_ENV_VAR", "hello_world", 0); 
    while (envp[i]) 
    printf("%s\n", envp[i++]); 
    return (0); 
} 

回答

1

setenv()被记录,以不允许可选envp参数更改为主力。

如果您需要遍历所有环境变量,请使用extern char **environvariable

另请参阅this question

+0

所以,我必须重新编码setenv(),如果我想使用envp,对不对? – Difender

+0

编号'envp'是'main'中的一个*局部变量*,外部函数根本无法修改它。使用'extern char ** environ;'。或者,如果你坚持使用'envp'变量,只需在'setenv'调用之后的'main'中写入'envp = environ;'即可。 –

相关问题