Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单C或C++;用于控制systemd服务的API 目标_C_Linux_Service_Systemd_Dbus - Fatal编程技术网

简单C或C++;用于控制systemd服务的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-托管服务的示例,

我想编写C/C++应用程序,并为它们提供一个API,以便直接与
systemd
托管服务通信。实际上,我希望我的应用程序能够执行与
systemctl启动服务相当的功能_name@unit_number.service
而不使用
system()
popen()
exec()
调用(硬需求


问题: 假设
systemd
版本219(即CentOS v7.4,也是一个硬要求),是否有一个简单的C/C++API用于与
systemd
通信


工作至今
  • 我在网上搜索了C/C++和中控制
    systemd
    -托管服务的示例,但没有找到任何好的示例
  • 我总是可以进行反向工程,但这样我就有可能与GPL许可相冲突
  • ,因为维护人员自己声明“如果您直接使用这个低级API,那么您的注册会带来一些麻烦。

  • 硬要求
    • systemd
      v219
    • CentOS v7.4
    • C/C++
    • 没有
      system()
      /
      popen()
      /
      exec()
      调用
      systemctl
      CLI实用程序
    • 非传播许可证(即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。