我需要的是通过某种 API 控制 Linux 守护进程的可能性,例如检查某个守护进程是否正在运行、启动/停止/重新启动它等。
有没有提供此功能的 Linux 库?
最佳答案
你也可以使用 D-Bus或 SNMP .然而,大多数守护进程只是将它们的 PID 写入 /var/run/
下的某个文件并接受 SIGTERM
信号停止,以及 SIGHUP
信号重新加载它们的配置文件(通常在 /etc/
下)。
请注意,如果您采用通常的约定,您的守护程序 mydprog
将其 pid 写入 /var/run/mydprog.pid
一些其他程序可以读取该 pid在那里检查,使用kill(2) 0 信号表示守护进程正在运行。您还可以访问 /proc/1234/
下的一些伪文件(其中 1234 是守护程序的 pid),特别是 /proc/1234/status
,请参阅 proc(5)了解更多。
你也可以设计你的守护进程,让它回答,例如使用一些 JSONRPC关于一些 unix(7) 的协议(protocol)或 tcp(7)套接字,通过提供状态信息来进行某些查询。您可能会考虑使用一些 HTTP协议(protocol)通过一些 HTTP 服务器库,如 libonion ,或任何其他消息传递或远程过程调用协议(protocol)。
关于c++ - 控制 Linux 守护进程的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10042192/