Написание кода на C ++ (ОС Linux) - у меня есть программа, в которой я пытаюсь выполнить другой файл запуска (ROS) с помощью системного вызова.
Код:
int NodeletLauncher::startNode(std::string nodeName, std::string launchFile)
{
std::string command_call = " roslaunch " + nodeName + " " + launchFile + " &";
pid_t pid = fork();
switch (pid)
{
case -1: //error
ROS_ERROR_STREAM("Fork failed");
break;
case 0: //child process
ROS_INFO_STREAM("Starting node: " << nodeName);
system(command_call.c_str());
mProcList[nodeName] = getpid();
break;
default:
break;
}
return 0;
}
Я могу запустить его, но получаю следующую ошибку:
[ОШИБКА] [1525469227.289615557]: невозможно изменить FD epoll: нет такого
файл или каталог [ОШИБКА] [1525469227.289675313]: невозможно удалить FD
на epoll: нет такого файла или каталога
что это значит?
Есть ли лучший способ запустить программу, не используя системный вызов с '&' в конце? (добавьте '&', чтобы не блокировать родительский процесс).
Спасибо!