2012-12-12 7 views
7

私は起動時に起動したくないプロセスに対して.serviceを持っていますが、所定の時間にC/C++アプリケーションからシステムDサービスを起動するかD-Busサービスを呼び出す

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

のは、私は、コマンドラインからの簡単なINTROSPECT実行する場合/usr/share/dbus-1/servicesから私のdbusのサービスファイルが/lib/systemd/system is com.startThis.service

からcom.callThis.service と私のメインのサービスファイルであることを言ってみましょう:D-バスサービスファイル

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

を呼び出され、Exec(com.starThis)にあるものが開始されます。問題は、私がD-Bus glibを使ってC/C++コードからこれを達成したいということです。

+0

これを実装しようとしましたか?あなたがやったいくつかの最初のステップを示してください。多くのドキュメントや例が見つかりますhttp://developer.gnome.org/gio/2.30/GDBusConnection.html – drahnr

+1

http://www.freedesktop.org/wiki/Software/systemd/dbus/ここに情報があります'systemd'のDBUS API –

答えて

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);