Захват вывода из консольного приложения, запущенного демоном - PullRequest
0 голосов
/ 24 апреля 2019

Как можно получить выходные данные из консольного приложения, если оно запущено процессом-демоном в 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;
}

Запуск этого, как есть, из демона не дает сбой, просто возвращает пустое.

1 Ответ

2 голосов
/ 24 апреля 2019

Это не так.Демон бежит отстраненно.Это то, что делает его демоном.

Обычно демон регистрируется где-нибудь (например, через syslog в Linux), и вы можете наблюдать цель журнала для получения информации.

В противном случае не запускайтеэто как демон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...