Как можно получить выходные данные из консольного приложения, если оно запущено процессом-демоном в Ubuntu Server 18.04? Для процесса, не являющегося демоном, я обычно использую это:
string myexec(const char* cmd)
{
array<char, 128> buffer;
string result = "";
unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose);
if (!pipe)
{
result = "FAIL";
throw std::runtime_error("popen() failed!");
}
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr)
{
result += buffer.data();
}
return result;
}
Запуск этого, как есть, из демона не дает сбой, просто возвращает пустое.