我被要求(作为一个项目)在c中实施setenv()
和unsetenv()
。
我正在为我正在建造的迷你壳做这件事。我知道我可以直接访问环境变量(extern char **environ
),因为我用它来实现getenv()
。
我的问题是,如何在上面指出的环境变量中添加一个值?
我不需要代码只是一个关于如何或链接到可以帮助的地方的想法,我只能使用environ来实现。
我到处寻找,一无所获。感谢。
答案 0 :(得分:2)
向environ
添加新变量的方式如下:
char
的2个指针。environ
复制到新环境。\0
终止数组。environ
设置为指向新数组。environ
,则现在可以free
。在你自己的shell中,你可以做自己的簿记,以确保你不需要一直为environ
分配新的缓冲区(例如,通过分配一个稍微大一点的数组并保持有多少条目是免费的)。
答案 1 :(得分:1)
因为你不想要代码(;
http://man7.org/tlpi/code/online/book/proc/setenv.c.html
您可以看到setevn
在内部使用putenv
,后者又使用__add_to_environ
内部函数来执行此操作。请参阅此处的代码: