Я пытаюсь проанализировать поток с помощью команды popen, которая возвращает постоянный поток строк вывода.
Это приводит к зависанию приложения при вызове fgets()
.
Вот метод:
std::string MyClass::InvokeCmd(std::string command)
{
std::string result;
std::array<char, 128> buffer;
FILE *pipe = popen(command.c_str(), "r");
while (fgets(buffer.data(), 128, pipe) != NULL)
{
result += buffer.data();
}
}
pclose(pipe);
return result;
}
Команда является командой ROS:
rostopic hz / topicname
TheКоманда выполняется непрерывно и выдает одну строку вывода примерно каждую секунду.
Если я жду около 30 секунд (выглядит как время сброса буфера), я вижу данные.