저는 GNU 도구와 bash를 사용하여 마이크로서비스 애플리케이션을 구축 중이며 서비스 간에 IPC를 사용 dbus-monitor
하고 dbus-send
수행하기로 결정했습니다. 문제는 dbus-monitor
메타데이터와 페이로드를 서로 다른 라인으로 나눠서 수신한 메시지를 활용하기 어렵다는 점이다 .
리스너를 인스턴스화하면
dbus-monitor --system interface=org.foo.bar member=test \
| while read a; do
echo got message $a
done
그리고 그것과 소통하다
dbus-send --system --type=signal / org.foo.bar.test string:"hello world"
출력은 다음과 같습니다
got line signal time=1676042614.782238 path=; interface=org.foo.bar; member=test
got line string "hello world"
string "hello world"
메시지의 페이로드이지만 다른 줄에 작성됩니다 .
나는 성공하지 못한 채 IFS를 망쳐 보았습니다. 또한 매개변수를 dbus-monitor
다음 으로 변경해 보았지만 --profile
페이로드가 생략되었습니다. 그래서 이 문제를 해결하는 방법을 모르겠습니다.
답변1
문자열만 필요한 경우 dbus-monitor 명령 끝에 "type=string"을 표현식으로 추가하세요.