Я пытаюсь создать boost::process
из вектора строковых аргументов:
void runProcess( const std::string& exe, const std::vector<std::string>& args )
{
bp::ipstream out;
bp::child c(exe, args, std_out > out);
...
}
Это, очевидно, работает, но я получаю следующее предупреждение:
предупреждение C4503: ‘boost :: fusion :: detail :: for_each_linear’: превышена длина оформленного имени, имя было усечено
Это исчезает, если передача аргументов один за другим bp::child c(exe, "param1", "param2", std_out > out);
,
Как правильно позвонить child
конструктор в этой ситуации?
Вы бы использовали как задумано:
bp::child c(bp::search_path("ls"), bp::args({"-1", "-l"})/*, ...*/);
В вашем случае, может быть, как
void runProcess( const std::string& exe, const std::vector<std::string>& args )
{
bp::ipstream out;
bp::child c(exe, bp::args(args), std_out > out);
...
}
Других решений пока нет …