The low-level D-Bus C API学習ノート(一)Dbus開発環境構成

2878 ワード

D-Busはメッセージバスシステムであり、アプリケーションが相互に通信する簡単な方法である.プロセス間通信に加えて、D-Busはプロセスのライフサイクルを調整するのに役立ちます.これにより、シングルインスタンスアプリケーションまたはデーモンの作成が簡単で信頼性が高くなり、サービスが必要なときにアプリケーションとデーモンをオンデマンドで起動できます.
D-BUSは本質的にプロセス間通信(inter-process communication)(IPC)の1つの実装であるが、D-BUSが「別のIPC実装」ではないという特性がある.それぞれが特定の明確な定義の問題を解決するために位置しているため、多くの異なるIPC実装があります.CORBAはオブジェクトプログラミングにおける複雑なIPC向けの強力なソリューションである.DCOPは軽量級のIPCフレームワークであり、機能は少ないが、Kデスクトップ環境にうまく統合できる.SOAPおよびXML−RPCは、Webサービスのために設計されているので、その伝送プロトコルとしてHTTPを使用する.D-BUSはデスクトップアプリケーションとOS通信用に設計されている.
D-Bus三層アーキテクチャ
D-Busは、プロセス間の通信のためのメッセージバスシステムである.これは3階層アーキテクチャのIPCシステムで、1、関数ライブラリlibdbus、2つのアプリケーションの相互接続とインタラクティブメッセージに使用されます.2、libdbusに基づいて構築されたメッセージバスデーモンプロセスは、同時に複数のアプリケーションに接続でき、1つのアプリケーションからのメッセージを0または複数の他のプログラムにルーティングすることができる.3、特定のアプリケーション・フレームワークに基づくパッケージ・ライブラリまたはバンドル(wrapper libraries or bindings).たとえば、libdbus-glibおよびlibdbus-qt、Pythonなどの他の言語にバインドされています.ほとんどの開発者は、D-Busプログラミングの詳細を簡略化するため、これらのパッケージ・ライブラリのAPIを使用しています.libdbusは、より高いレベルのバインドの最下位バックエンドとして意図的に設計されています.(low-levelbackend).libdbusのAPIの大部分はバインディングを実現するために使用されているだけです.
ここでは,著者らのこの文章はDbusの下位apiを述べ,関数ライブラリlibdbusにのみ関与することを宣言する.QtDbus詳細はhttps://blog.csdn.net/czhzasui/article/details/81071383コンパイル環境:Ubuntu 16.04 LTS開発IDE:Clion Ubuntu 16にはlibdusライブラリが付属しているため、インストールは不要です.次のコードを入力して、Dbusがインストールされているかどうかを確認します.
dbus-monitor

cmakeにDbusライブラリを追加する場所は「find-nameファイル名」で検索できます.
include_directories(/usr/include/dbus-1.0)
include_directories(/usr/lib/x86_64-linux-gnu/dbus-1.0/include)

具体的なCMakeコードは以下の通りです.
cmake_minimum_required(VERSION 3.9)
project(DBus_test)

set(CMAKE_CXX_STANDARD 11)

include_directories(/usr/include/dbus-1.0)
include_directories(/usr/lib/x86_64-linux-gnu/dbus-1.0/include)
include_directories(DBus)

set(CMAKE_CXX_STANDARD 11)

add_executable(DBus_test main.cpp DBus/DBus.cpp DBus/DBus.h)

target_link_libraries(
        DBus_test -ldbus-1 -lpthread
)

最後にDbus関数を使用するためにヘッダファイルを追加する必要があります.
#include