gpt4 book ai didi

c++ - 停止库调用 getenv?

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:16 27 4
gpt4 key购买 nike

我的程序使用现有的库,文档有限,我无法控制。出于这个问题的目的,它的使用如下:

#include <theirlib.hpp>

using their_lib::Node;

int main ( int argc, char** argv )
{
Node my_node;

// connect to the master communication server
my_node.init();

// ...
}

出于众所周知的原因,init() 不接受任何参数,而是尝试从环境变量中查找通信服务器的 URI(以及其他参数)。我可以用 ltrace 看到这个:

...
15:43:24 libtheirlib.so->getenv("THEIRLIB_MASTER_URI") = nil <0.000173>
...

现在,我可以用脚本包装我的程序并预先设置环境变量,但如果我希望能够在运行时更改它们怎么办?我可以使用 setenv() 但这仍然让我觉得污染了环境,如果我想同时连接到多个主服务器怎么办?

我有什么选择(如果有的话)来防止 theirlib 使用环境变量来改变它的行为并强制它使用我可以在代码中提供的值?

最佳答案

您的程序将在子 shell 中运行,因此不会“污染环境”——没有其他进程会看到您 setenv() 的内容。

关于c++ - 停止库调用 getenv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45843769/

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