Clo*_*oud 8 c linux service dbus systemd
我想编写C/C++应用程序并为它们提供一个API,以便直接与systemd托管服务进行通信.实际上,我想我的应用程序能够做的相当的systemctl start service_name@unit_number.service不使用system(),popen()或exec()电话(硬性要求).
是否有一个简单的 C/C++ API用于通信systemd,假设systemd版本为219(即CentOS v7.4,也是一项硬性要求)?
systemd了C/C++ 中控制托管服务的例子,发现了关于这个主题的奇怪讨论,但没有找到任何好的例子.systemctl从源代码中对219版进行逆向工程,但后来我可能会违反GPL许可.libsystemd仅仅为了特定应用程序的好处而允许手动升级,而且我显然不是第一个提出这种担忧的人.systemd v219.system()/ popen()/ exec()调用systemctlCLI实用程序.是否有一个更简单的API,我可以在CentOS v7.4上使用(即使我必须自己提供共享库),可以systemd直接通过C/C++代码以简单,可靠的方式与之通信?如果现有的libdbus-1.soAPI很复杂但仍然可靠,并且我可以围绕它创建一个可靠/稳定的包装器库,我很乐意探索这个选项.此外,如果可以独立于手动构建和部署SD-BUS组件systemd并使用它们而无需修改/升级systemd系统上已有的库/守护程序,我也可能会采用这种方式.
谢谢.
小智 3
正如您已经想到的,您应该只使用 dbus 库与 systemd 交互,没有其他受支持的方法可以做到这一点。即使您取消了不执行二进制文件的要求,它仍然会让人皱眉,因为 *ctl 工具是命令行用户界面,不打算或设计为从其他程序调用。
| 归档时间: |
|
| 查看次数: |
2008 次 |
| 最近记录: |