8

起動時に開始したくないプロセスの.serviceがありますが、特定の時間に、すでに実行中の別のアプリケーションから何らかの方法で呼び出します。

もう1つのオプションは、D-Bus(アプリでglib dbusを使用しています)サービスファイルを/ usr / share / dbus-1 / servicesに配置し、アプリケーションから呼び出すことです。また、私もこれを行うことができません。

からの私のdbusサービスファイルとから の私のメインサービスファイル/usr/share/dbus-1/servicesがあるとしましょうcom.callThis.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)にあるものが開始されます。問題は、D-Busglibを使用してC/C++コードからこれを実現したいということです。

4

2 に答える 2

6

g_dbus_connection_send_messageg_dbus_message_new_method_callまたはg_dbus_message_new_signalの組み合わせがあなたが探しているものでなければなりません。

于 2013-02-12T08:09:00.950 に答える
0

私は同じことをするのに苦労しました。発見: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);
于 2016-09-05T12:21:35.343 に答える