Как я могу установить переменную среды в C ++ без передачи аргумента командной строки - PullRequest
0 голосов
/ 28 января 2020

Я использую 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());

1 Ответ

0 голосов
/ 28 января 2020

В зависимости от вашей модели угроз, возможно, вы можете обойтись без установки переменных среды через /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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...