从C / C ++应用程序启动systemd服务或调用D

我有一个.service进程,我不想在启动时启动,但在某个特定时间以某种方式从另一个已运行的应用程序中调用它。

另一种选择是在/ usr / share / dbus-1 / services中放入一个D-Bus(我在我的应用程序中使用glib dbus)服务文件,并以某种方式从我的应用程序中调用它。 另外,我也无法做到这一点。

比方说,我的/usr/share/dbus-1/services dbus服务文件是com.callThis.service而我从/lib/systemd/system is com.startThis.service主要服务文件/lib/systemd/system is com.startThis.service

如果我从命令行运行一个简单的内省:

/home/root # dbus-send --session --type=method_call --print-reply 
--dest=com.callThis  /com/callThis org.freedesktop.DBus.Introspectable.Introspect

D-Bus服务文件将被调用,它将启动Exec(com.starThis)中的内容。 问题是我想从C / C ++代码中使用D-Bus glib来实现这个功能。


g_dbus_connection_send_message与g_dbus_message_new_method_call或g_dbus_message_new_signal的组合应该是您正在寻找的。


我有麻烦去做同样的事情。 发现:G_BUS_NAME_WATCHER_FLAGS_AUTO_START解决它。

g_bus_watch_name(G_BUS_TYPE_SYSTEM, "com.mydbus.listen",
      G_BUS_NAME_WATCHER_FLAGS_AUTO_START, xOnNameAppeared, xOnNameVanished,
      this, nullptr);
链接地址: http://www.djcxy.com/p/67211.html

上一篇: Start systemd service from C/C++ application or call a D

下一篇: zero exit status" error downloading XML and RCurl R packages