[D-BUS] D-BUS란?
2025. 3. 24. 23:29
D-BUS란?
D-BUS (데스크톱 버스)란 IPC를 위한 일종의 버스로,
같은 머신(환경)에서 동시에 실행중인 여러 프로그램(즉, 프로세스) 간의 통신을 가능하게 하는 소프트웨어 버스 입니다.
이는 프로세스 간 통신 (IPC), 원격 프로시져 호출 (RPC) 매커니즘의 일종입니다.
이름에서 알 수 있듯이, D-BUS 리눅스 데스크톱 환경을 표준화하기 위해 개발되었습니다.
D-BUS는 레드햇의 하복 패닝턴이이 그놈, KDE 등의 리눅스 데스크톱 환경이 제공하는 서비스를 표준화하기 위해 발의된 Freedesktop.org 프로젝트 일부로서 개발되었지만, 오늘날 D-BUS는 임베디드 시스템에도 많이 쓰이고 있습니다.
D-BUS는 유닉스 소켓을 기반으로 동작합니다.
쉽게 말해, IPC를 위해 메시지 버스 구조를 띄고 있는 라이브러리라고 볼 수 있습니다.
(출처: https://en.wikipedia.org/wiki/D-Bus#)
D-BUS 공통 개념
'bus name' : 어떤 하나의 bus로 향하는 각 connection은 'a bus name'이라고 불리는 것에 의해 D-BUS context 안에서 정의됩니다.
만약, 어떤 하나의 bus name이 어떤 하나의 connection에 할당될 때, 그 connection이 그 bus name을 소유한다라고 말합니다.
the connection owns the bus name
(출처: https://en.wikipedia.org/wiki/D-Bus#)
(출처: https://en.wikipedia.org/wiki/D-Bus#)
GLib 설치
make: gdbus-codegen: Command not found
위의 에러가 발생하면, 아래의 명령어로 gdbus 사용하기 위해 glib을 설치하자.
sudo apt install libglib2.0-dev
GLib 버전 확인하는 방법
pkg-config --modversion glib-2.0
참고
https://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
https://www.manpagez.com/html/gio/gio-2.54.0/GDBusConnection.php
https://docs.gtk.org/gio/method.DBusConnection.register_object.html
예제 모음
참고하면 좋을것 1 - https://docs.gtk.org/gio/class.DBusConnection.html#an-example-d-bus-server
구글에서 검색한 것 - (https://www.google.com/search?client=ubuntu&channel=fs&q=site%3Adocs.gtk.org++examples)
Git hub 예제
'D-BUS' 카테고리의 다른 글
(비) [D-BUS] 간단한 예제 CMakefile.txt 작성법 - bb file 작성법 (0) | 2025.03.28 |
---|---|
[D-BUS] client.c server.c 예제 (0) | 2025.03.26 |