Я работаю с ROS и пытаюсь интегрировать Poco Process для управления процессами в ROS QT Interface.запуск фонового процесса с POCO
Вот пример того, что мой узел выглядит так далеко:
void My_Interface::gazebo_launch_world()
{
std::string command = "roslaunch";
std::vector<std::string> args;
args.push_back("robot_gazebo");
args.push_back("robot_gazebo.launch");
PocoProcess pp(command, args);
pp.run();
}
int PocoProcess::run()
{
int rc;
try
{
Poco::Pipe outPipe;
Poco::ProcessHandle ph = Poco::Process::launch(command_, args_, 0, &outPipe, 0);
rc = ph.id();
Poco::PipeInputStream istr(outPipe);
Poco::StreamCopier::copyStream(istr, std::cout);
}
catch (Poco::SystemException& exc)
{
std::cout << exc.displayText() << std::endl;
return (-1);
}
return rc;
}
Это прекрасно работает (запуск процесса), но проблема в том, что мой интерфейс замерзает во время ожидания завершения процесса, который действительно нежелательно.
Итак, все равно, что я могу запустить процесс POCO в фоновом режиме?
PS: (Безнадежно) Я попробовал даже «&» на векторе args, но это не сработало!
Спасибо,