私は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」を式として追加してください。