如何编写自己的setenv()?

时间:2015-12-15 22:20:06

标签: c environment-variables setenv

我的学校希望我实施setenv()标准图书馆功能的行为。我不允许setenv()用于此实施。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

在C编程语言的许多实现上,特别是在POSIX上,可以从environ全局变量访问该环境。您可能需要手动声明它,因为它未在任何标准头文件中声明:

extern char **environ;

environ指向NULL终止指向variable=value字符串的指针数组。例如,如果您的环境包含变量foobarbaz,则environ中的条目可能为:

environ[0] = "foo=a";
environ[1] = "bar=b";
environ[2] = "baz=c";
environ[3] = NULL;

要在不使用setenv()putenv()功能的情况下更改环境,请检查您要设置的密钥是否已存在。如果是,则覆盖该密钥的条目。否则,您需要将environ的内容复制到新阵列中,并将新条目添加到其末尾。您可以使用malloc()calloc()memcpy()来实现此目的。由于这是家庭作业,我不打算提供进一步的细节。