简单C或C++;用于控制systemd服务的API 目标
我想编写C/C++应用程序,并为它们提供一个API,以便直接与简单C或C++;用于控制systemd服务的API 目标,c,linux,service,systemd,dbus,C,Linux,Service,Systemd,Dbus,我想编写C/C++应用程序,并为它们提供一个API,以便直接与systemd托管服务通信。实际上,我希望我的应用程序能够执行与systemctl启动服务相当的功能_name@unit_number.service而不使用system()、popen()或exec()调用(硬需求) 问题: 假设systemd版本219(即CentOS v7.4,也是一个硬要求),是否有一个简单的C/C++API用于与systemd通信 工作至今 我在网上搜索了C/C++和中控制systemd-托管服务的示例,
systemd
托管服务通信。实际上,我希望我的应用程序能够执行与systemctl启动服务相当的功能_name@unit_number.service
而不使用system()
、popen()
或exec()
调用(硬需求)
问题: 假设
systemd
版本219(即CentOS v7.4,也是一个硬要求),是否有一个简单的C/C++API用于与systemd
通信
工作至今
systemd
-托管服务的示例,但没有找到任何好的示例硬要求
v219systemd
- CentOS v7.4
- C/C++
- 没有
/system()
/popen()
调用exec()
CLI实用程序systemctl
- 非传播许可证(即LGPLv2可以,但首选BSD/MIT)
问题(重复) 是否有一个更简单的API可以在CentOS v7.4上使用(即使我必须自己提供共享库),它可以用于直接通过C/C++代码以简单可靠的方式与
systemd
通信如果现有的libdbus-1.so
API很复杂,但仍然可靠,我可以围绕它创建一个可靠/稳定的包装库,我愿意探索这个选项。,如果可以独立于systemd
手动构建和部署SD-BUS组件,并在不修改/升级系统上已有的systemd
库/守护进程的情况下使用这些组件,我也可以走这条路
编辑和评论
-
<>我将开放使用一个成熟的C++库,只要它不需要完全释放所有的源。
谢谢。正如您已经想到的,您应该只使用dbus库与systemd交互,没有其他受支持的方式。
即使您取消了不执行二进制文件的要求,它仍然会受到反对,因为*ctl工具是命令行用户界面而不是从其他程序调用的您是否使用过C++包装库?有一些已经存在,使DBUS库更容易使用。@ RM5248我将开放使用成熟的C++库,只要它不需要全部源的完全释放。谢谢由于systemd API是作为一组D-Bus接口公开的,因此这个问题本质上归结为“您推荐什么样的C/C++D-Bus绑定?”——其中包括了这些绑定及其优缺点。您还发现这似乎是一个常见问题,新的“SD Bus”API解决了这一问题。为什么你认为有一个没有痛苦的旧API,而他们制作了一个闪亮的新API来减轻痛苦?确实有人建议使用sd总线。。但是从C++中,他唯一拥有成熟测试的、支持良好的选择是QTDBUS。