2014-03-12 1 views
8

안녕하세요 친애하는 SO 커뮤니티 :) 내 라즈베리 파이 작업 DBUS를 얻기 위해 노력하고X11 종속성 만 쉘 C++ 응용 프로그램 Raspbian 리눅스

을 시작, X11없이 DBUS를 컴파일합니다. Pi 데스크톱 환경에있을 때 libdbus-C++ - 1의 예제 코드가 정상적으로 작동합니다. -> (startx)

인터넷에 대한 제 연구와 stackoverflow에서 찾은 예제가 도움이되지 않았습니다. 내가 쉘 모드에서 오전 때

그러나, 나는 또한

eval 'dbus-launch --auto-syntax' ./client 

eval 'dbus-launch --auto-syntax' ./server 

하지만이 작동하지 않습니다 시도

./client 
terminate called after throwing an instance of 'DBus::Error' 
    what(): /usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed. 
Aborted 

오류 메시지가 서버 응용 프로그램은 메시지 데몬을 시작 클라이언트로부터 도달 할 수는 없습니다. 또한 데몬은 활성 상태를 유지합니다.

는 내가 가지고 : 또한 서비스 목록에 표시되지 않습니다

terminate called after throwing an instance of 'DBus::Error' 
    what(): The name org.freedesktop.DBus.Examples.Echo was not provided by any .service files 
call1: Aborted 

합니다.

이 후 나는

DISPLAY=":0" DBUS_SESSION_BUS_ADDRESS="unix:path=/run/dbus/system_bus_socket" ./server 

다른 명령을 시도하고 내가 가지고 :

terminate called after throwing an instance of 'DBus::Error' 
    what(): Connection ":1.10" is not allowed to own the service "org.freedesktop.DBus.Examples.Echo" due to security policies in the configuration file 
Aborted 

:(그 또한 내가 가진 X11 코드 없이 DBUS를 컴파일하는 방법을 발견 작동하지 않는 후

./configure --with-x=no 

불행히도 효과가 없습니다. 여전히 X11을 시작해야합니다. 응용 프로그램 ... 내가 뭘 잘못 했니?

하지만 내가 그것을 필요 없어요 내가 원하는 해달라고 X11을 시작하지 않고 내 응용 프로그램을 시작할 수있는 방법

eval 'dbus-launch --auto-syntax' dbus-monitor 

같은 명령. 도와 주셔서 감사합니다.

친절 움

#

업데이트 내가 지금 조금 바보 느낄 간주하지만 난

먼저 당신이 DBUS 세션 데몬

을 시작하는 데 필요한 X11없이 실행하는 방법을 발견
dbus-launch 

이렇게하면 DBUS_SESSION_BUS_ADRESS가 나타납니다.

DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-9rMVHdByuH,guid=10592ff7107f13dd241a02af531ab357" ./server 
당신이

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-6aT4DZgmA1,guid=b1231a014a7b10e74e04f8ba531abdf9 dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply     /org/freedesktop/DBus org.freedesktop.DBus.ListNames 

로 서비스를 등록 할 수

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-6aT4DZgmA1,guid=b1231a014a7b10e74e04f8ba531abdf9 dbus-monitor 

하지만 하나의 질문으로 메시지를 모니터링하는 것은 남아 같은 당신이 당신의 C를 시작할 수 있습니다 그 후

++ 응용 프로그램 어떻게 자동으로 할 수 있습니까?

+0

오랫동안 죄송합니다. 게시물 : – Dogan

+0

안녕하세요 도간 나는 나무 딸기 파이에 비슷한 문제가있어 귀하의 페이지에 끝났다. dbus-launch 명령이 raspberry pi에 없기 때문에, 나는 X 서버가없는 pi의 헤드리스 설치가 있습니다. dbus-launch 패키지를 얻는 방법 ?? – Ahmed

답변

0

위대한 글. 당신은 분명히 나보다 더 근면했다. 디스플레이 버퍼를 대신 실행했습니다.

하나의 질문이 남았습니다. 어떻게 자동으로 할 수 있습니까?

$dbus-launch 

이후

는, 표준 출력에 버스 정보를 출력 그냥 후 프로그램을 실행하려고 했습니까? 예를 들어

$dbus-launch ./server 

DBUS 발사 man 페이지는 말한다 : 당신은 프로그램을 지정할 수 있습니다

이 실행되도록; 이 경우 dbus-launch는 세션 버스 인스턴스를 시작하고 적절한 환경을 변수로 설정하여 지정된 프로그램이 버스를 찾을 수있게 한 다음 지정된 인수를 사용하여 지정된 프로그램을 실행합니다. 예는 아래 을 참조하십시오.

프로그램을 시작하면 dbus-launch는 정보를 표준 출력으로 인쇄하지 않습니다.

0

하지만 한 가지 질문이 남았습니다. 자동으로 어떻게 할 수 있습니까?

역 따옴표를 또는 $() 구조는 DBUS 발사에서 정보를 읽을 수 있습니다 :

dbus-launch manual를보십시오.