gpt4 book ai didi

C++ getenv 和 setenv

转载 作者:行者123 更新时间:2023-11-30 03:20:48 30 4
gpt4 key购买 nike

所以我正在尝试构建一个简单的 shell,它可以添加、删除、获取和打印环境。我知道来自父进程的环境拷贝是通过 C++ 程序中的 int main() 获得的,但是在调用 setenv 之后,环境拷贝是否永远不会更新?

我是否必须自己管理环境并在我的 shell 中保留一份环境拷贝,因为当我执行 setenv 调用然后打印环境时;我的变量和值不存在。如果我调用 getenv,变量仍然是 那里。最后我错过了一些非常简单的东西。谢谢

这不是作业项目,但这是我正在谈论的示例。

#include <iostream>
#include <stdlib.h>

int main(int argc, char * argv[], char * envp[]) {

setenv("My_Example", "For StackOverFlow because I'm dumb. Thanks.", 0);

for (char **env = envp; *env != 0; env++)
std::cout << *env << std::endl;

std::cout << "---------------------------------------------" << std::endl;
std::cout << "Value: " << getenv("My_Example") << std::endl;

return 0;
}

最佳答案

envp 是调用 main 时环境的拷贝。一旦调用 setenv,环境就发生了变化,envp 中的相应条目已过时。

关于C++ getenv 和 setenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52548062/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com