入り口に戻る

原文はこちら
原文の魚拓はこちら

dbus-send(1) manページ

名前

dbus-send - メッセージ・バスにメッセージを送信する

書式

dbus-send [ --system | --session | --bus=ADDRESS | --peer=ADDRESS ] [--sender=NAME] [--dest=NAME] [ --print-reply [=literal]] [--reply-timeout=MSEC] [--type=TYPE] OBJECT_PATH INTERFACE.MEMBER [CONTENTS...]

説明

dbus-send コマンドを使って D-Bus メッセージ・バスにメッセージを送信することができる。全体像について詳しく知りたければ https://www.freedesktop.org/wiki/Software/dbus/ を見よ。

周知のメッセージ・バス(well-known message buses)が2つ存在する:システム全体から使えるメッセージ・バス(「メッセージ・バス」サービスとして多くのシステムにインストールされている)とユーザ・ログイン・セッション毎のメッセージ・バス(ユーザがログインする度に起動される)である。オプション「--system」あるいは「--session」を指示として与えると、dbus-send はメッセージをシステム・バスあるいはセッション・バスへ送信するようになる。どちらも指定しなかった場合、dbus-send はセッション・バスへ送信する。

dbus-send のほとんど全ての用法では引数 --dest を指定する必要がある。この引数はメッセージの送信先となる、バス上の「接続」の名前を表す。--dest の指定を省略した場合、宛先は一切設定されない。

送信するメッセージのオブジェクト経路と名前を常に指定しなければならない(訳註:「名前」とはインターフェイス名とメンバ名をピリオドで繋げたもの)。以下の引数が存在する場合、それはメッセージの内容(メッセージの引数)である(訳註:dbus-send コマンドの引数ではなく d-bus メッセージの引数である)。この引数は、型の指定を伴う値から成り、以下に示すようにコンテナ型(配列型、辞書型、ヴァリアント型)を含んでいても良い。


<contents>   ::= <item> | <container> [ <item> | <container>...]
<item>       ::= <type>:<value>
<container>  ::= <array> | <dict> | <variant>
<array>      ::= array:<type>:<value>[,<value>...]
<dict>       ::= dict:<type>:<type>:<key>,<value>[,<key>,<value>...]
<variant>    ::= variant:<type>:<value>
<type>       ::= string | int16 | uint16 | int32 | uint32 | int64 | uint64 | double | byte | boolean | objpath

D-Bus ではこれ以外の型も使用できるが、dbus-send では今のところ使用できない。また、dbus-send では空のコンテナや入れ籠型のコンテナ(例えばヴァリアントの配列)も使用できない。

dbus-send の使用例を挙げる:



  dbus-send --dest=org.freedesktop.ExampleName               \
            /org/freedesktop/sample/object/name              \
            org.freedesktop.ExampleInterface.ExampleMethod   \
            int32:47 string:'hello world' double:65.32       \
            array:string:"1st item","next item","last item"  \
            dict:string:int32:"one",1,"two",2,"three",3      \
            variant:int32:-8                                 \
            objpath:/org/freedesktop/sample/object/name

インターフェイスはドット「.」を挟んでメソッドやシグナルと繋がっているが、実際のプロトコルではインターフェイスとそのメンバとは別個のフィールドであることに注意。

オプション

以下のオプションを使用することができる:

--dest=NAME

メッセージを受信する接続の名前を指定する。

--print-reply

送ったメッセージに対するリプライ(返答)を受け取るまで待機し(block)、受信したリプライを人間が読める形で表示する。また、このオプションを指定するとメッセージ型(--type=)に method_call を指定したことになる。

--print-reply=literal

送ったメッセージに対するリプライ(返答)を受け取るまで待機し(block)、リプライの本体を表示する。リプライの内容がオブジェクト経路や文字列である場合、それらを句読記号やエスケープ文字無しで文字通りに表示する。

--reply-timeout=MSEC

最大 MSEC ミリ秒だけリプライを待ち受ける。デフォルト値は実装次第であるが、大抵は 25 秒である(訳註:dbus-dbus-1.16/dbus/dbus-connection-internal.h:48行目「#define _DBUS_DEFAULT_TIMEOUT_VALUE (25 * 1000)」)。

--system

システムのメッセージ・バスへ送信する。

--session

セッションのメッセージ・バスへ送信する。(これがデフォルトである。)

--bus=ADDRESS

ADDRESS のアドレスを持つメッセージ・バス(大抵は dbus-daemon)に登録する。

--peer=ADDRESS

ADDRESS のアドレスを持つ、メッセージ・バスでない D-Bus サーバに送信する。この場合、dbus-sendHello メソッドを呼び出さない。

--sender=NAME

メッセージを送信する前に名前 NAME の所有権を要求する。dbus-send が終了した時、この名前は解放される。

--type=TYPE

method_callsignal を指定する(デフォルト値は「signal」である)。

終了ステータス

終了ステータス「0」は成功を表す。ゼロ以外の終了ステータスは何らかの失敗を表す。例えば、無効な引数が含まれていた、--bus や --peer で指定したアドレスへの接続に失敗した、--sender で指定した名前の取得に失敗した、メソッド・コールに対するリプライを待ち受けていて時間切れになった、あるいはメソッド・コールに対する返答としてエラーを受け取ったなど。

著者

dbus-send は Philip Blundell が書いた。

バグ

バグの報告は D-Bus のメーリング・リストかバグ・トラッカーへ送ってほしい。https://www.freedesktop.org/wiki/Software/dbus/ を参照。

入り口に戻る