如何在不传递命令行参数的情况下在 c++ 中设置环境变量

How can i set my environment variable in c++ without passing command line argument

本文关键字:c++ 情况下 设置 环境变量 命令行 参数      更新时间:2023-10-16

我正在使用execv通过传递命令行参数来设置环境变量。 如何在不传递命令行参数的情况下设置环境变量。

std::vector<char*> arg;
arg.push_back("export MONGODB_HOSTNAME=" + mongodb_host + ";");
arg.push_back("export MONGODB_USERNAME=" + mongo_username + ";");
arg.push_back("export MONGODB_PASSWORD=" + mongo_passowrd + ";"); 
arg.push_back("NULL");
execv("/usr/bin/ssh", &arg.front());

根据您的威胁模型,也许您可以通过/usr/bin/env设置环境变量?

这看起来像下面这样:

std::vector<std::string> strArgs = {
"ssh",
"remote-server",
"env",
"MONGODB_USERNAME=" + mongo_username,
"MONGODB_PASSWORD=" + mongo_password,
"mongo"
};
// Convert std::vector<std::string> into char**
std::vector<char*> cArgs;
for (auto& str : strArgs) {
cArgs.emplace_back(str.c_str());
}
execv("/usr/bin/ssh", (const char **)&cArgs.front());