如果它是由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;
}
按原样运行此程序,从守护程序运行不会失败,只是返回空。
答案 0 :(得分:2)
不是。守护程序分离运行。这就是使它成为守护程序的原因。
通常,守护程序会在某个地方记录日志(例如,在Linux上通过await
登录),您可以观察日志目标以获取信息。
否则,请勿将其作为守护程序运行。