enter code here
我有一个在嵌入式Linux设备上运行的c++应用程序,它使用systemd.
如果我希望流化我的服务/进程的调试输出,我SSH到设备并从终端执行命令journalctl -u <my_systemd_service>.service -f
,其中<my_systemd_service>
是我的实际服务名称。
现在的问题是,在生产过程中,出于安全原因,我希望禁用SSH。但是,我仍然希望有时能够检索调试输出,当设备连接到MQTT代理时,通过向设备发送MQTT命令来触发调试输出。
当接收到MQTT命令时,是否有一种方法可以从c++代码本身中获得我的调试输出?
我不认为使用system()
将是理想的。例如system("journalctl -u <my_systemd_service>.service -f")
?当然,如果是这样的话,这也需要在单独的线程中运行。如有任何建议,不胜感激。
您可以将服务stdout/stderr直接指向一个文件,然后在需要时使用std::fstream
读取它。您可能希望看到以下内容:https://stackoverflow.com/a/43830129/11277878