[contact-form-7 404 "Not Found"]

Fique informado sobre as principais tendências em energias renováveis. Deixe seu e-mail e receba nossos conteúdos.

Sem categoria

dbus 예제

응용 프로그램은 연결에 할당할 잘 알려진 이름을 요청할 수도 있습니다. 이것은 같은 역 도메인 이름의 형태입니다, com.example.somename. 서비스 예제 바이너리가 있는 위치에 대한 Exec 경로입니다. KNoT 플랫폼(CESAR 기반)에는 nRF24 라디오를 사용하여 통신하는 장치를 관리하는 데몬이 있습니다. 이 데몬은 다른 구성 요소가 이러한 장치와 상호 작용할 수 있도록 하는 D-Bus 인터페이스를 노출합니다. 이 예제에서는 하위 집합을 사용합니다. 개체는 일부 작업을 수행하는 프로세스의 엔터티입니다. 개체는 경로 이름으로 식별됩니다. 경로는 시스템의 전체 파일 이름과 같습니다. 따라서 개체에는 /com/example/someserver와 같은 경로 이름이 있을 수 있습니다. 개체에는 메서드와 신호를 의미하는 멤버가 있습니다. 참고: Dbus 개발자는 항상 DBus API를 직접 사용하는 대신 DBus-glib 또는 dbus-qt와 같은 DBus 바인딩 라이브러리를 사용하는 것이 좋습니다. 내 의견으로는, 명확하게 모든 DBus 바인딩 라이브러리를 이해하기 위해, 그것은 우리가 여기에 사용하려고하는 것은 DBus API의 사소한 부분임을 명심, DBus 낮은 수준의 프로그래밍으로 다이빙하는 것이 매우 좋은 생각이다.

DBus 프로그래밍에 익숙해지기 위해 이 예제에서는 작은 응용 프로그램에 대한 버스 이름을 예약하는 방법을 살펴보겠습니다. DBus가 버스 이름에 적용되는 몇 가지 제한이 있으며 유효한 UTF-8 문자열이며 요소 이름을 구분하는 `.`가 하나 이상 있어야하며 각 요소에는 하나 이상의 문자(예 “org.freedesktop”)가 포함되어야 합니다. 에서는 전체 목록을 보려면 DBus 사양 섹션 버스 이름을 참조하십시오. 이 프로그램에서는 dbus_bus_add_match (DbusConnection *, const char *rule, DBusError *)를 사용하여 수신하려는 메시지에 대한 일치를 추가하고 규칙 문자열은 특정 형식을 가지며 자세한 내용은 DBus 일치 규칙을 참조하십시오. METHOD_CALL 메시지는 수신자의 개체에 대한 특정 작업에 대한 발신자의 요청입니다. 예를 들어, 수신기는 단일 객체를 가진 서비스일 수 있다. 보낸 사람은 서버에서 메서드의 실행을 요청하는 클라이언트일 수 있습니다. 메서드 호출 메시지에는 실행할 메서드의 이름과 실행에 필요한 인수가 있습니다.

수신기는 메서드를 실행하고 작업의 결과를 포함하는 METHOD_RETURN 메시지를 사용하여 보낸 사람에게 다시 응답해야 합니다. 또는 오류가 있는 경우 수신자가 오류 메시지로 응답할 수 있습니다. DBus가 특정 이름에 해당하는 실행 파일을 찾기 위해 버스 데몬은 일반적으로 /usr/share/dbus-1/서비스에 설치되어 있는 서비스 설명 파일을 찾고 확장 이름에 .service를 가지고 있습니다(내가 아는 모든 linux 배포판 서비스 파일의 예로 이 접두사를 사용하여 dbus 서비스 파일을 설치합니다. Qt D-Bus를 사용하면 응용 프로그램이 D-Bus를 사용하여 서로 메시지를 보낼 수 있습니다. 이 페이지에는 IPC(프로세스 간 통신)에 D-Bus를 사용하는 예제가 나열되어 있습니다. 응용 프로그램은 잘 알려진 추가 이름을 소유하도록 요청할 수 있습니다. 예를 들어 com.mycompany.TextEditor라는 이름을 정의하는 사양을 작성할 수 있습니다. 정의는 이 이름을 소유할 때 응용 프로그램에 인터페이스 org.freedesktop.FileHandler를 지원하는 경로 /com/mycompany/TextFileManager에 개체가 있어야 한다고 지정할 수 있습니다.