0

setenv() で新しい環境変数を設定しようとしています。

しかし、環境「extern char **environ」を使用する場合にのみ、 setenv() 関数が新しい環境変数を設定することに気付きました

しかし、 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

setenvenvp () は、オプションの引数を mainに変更できないことが文書化されています。

すべての環境変数を反復処理する必要がある場合は、 variable を使用しextern char **environ ます

この質問も参照してください。

于 2014-05-12T11:58:55.940 に答える