반응형

 

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 예제

https://github.com/chiehmin/gdbus_test

반응형