0

我正在尝试使用 setenv() 设置一个新的环境变量。

但我注意到 setenv() 函数只有在我使用环境“extern char **environ”时才会设置我的新环境变量

但我想使用 main() 的参数:“char **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);
}
4

1 回答 1

1

setenv () 被记录为不允许将可选envp参数更改为 main。

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

另请参阅此问题

于 2014-05-12T11:58:55.940 回答