入り口に戻る

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

# 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)が２つ存在する：システム全体から使えるメッセージ・バス(「メッセージ・バス」サービスとして多くのシステムにインストールされている)とユーザ・ログイン・セッション毎のメッセージ・バス(ユーザがログインする度に起動される)である。オプション「`--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-send は `Hello` メソッドを呼び出さない。

`--sender=``NAME`

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

`--type=``TYPE`

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

## 終了ステータス

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

## 著者

dbus-send は Philip Blundell が書いた。

## バグ

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

入り口に戻る