RMT(8)

名称
rmt - リモートプログラムから磁気テープの操作を行なうためのプロトコルモジュール

書式
rmt

解説
rmt は、リモートダンプおよびリストアを行なうプログラムから、プロセス間 通信を用いて磁気テープドライブを操作するために用いられます。 rmt は、通常は rexec(3) もしくは rcmd(3) からの呼び出しに応じて起動されます。

rmt は、磁気テープの操作要求を受け付け、コマンドを実行します。その後、 状態を返却します。 全ての応答は、 ASCII 文字列および以下の 2 つの形式を組み合わせて行なわれます。 コマンド実行が成功した場合は、以下の応答があります。

Anumber\n

number は、10 進の ASCII 表現です。コマンド実行が失敗した場合には、以下の 応答があります。

Eerror-number \nerror-message \n

error-number は、 intro(2) に記述のあるエラー番号であり、 error-message は、 perror(3) によって出力されるエラー文字列です。プロトコルは、以下のコマンドを含み、 コマンドと引数の間、もしくは引数間ではスペースは挿入されません。 ‘\n’ の表示は、その部分で改行が要求されています:

Odevice
    \nmode\n 指定された devide を mode で指定された属性でオープンします。 device は フルパスで指定され、 mode は open(2) で用いられる 10 進の ASCII 表現です。 すでにデバイスがオープンされていた場合、 そのデバイスは一旦クローズされ、再びオープンされます。

Cdevice\n
    現在オープンされているデバイスをクローズします。 device 指定は無視されます。

L   whence\n offset\n 指定された引数を用いて、 lseek(2) を実行します。返却値の意味は、 lseek システムコールのそれと同じです。

Wcount\n
    オープンされているデバイスに対し、データを書き込みます。 rmt は、要求元から count バイトのデータを読み込みます。予期しない EOF を 読み込んだ場合、異常終了します。本コマンドの返却値は、 write(2) システムコールと同じです。

Rcount\n
    オープンされてるデバイスから count バイトだけのデータを読み込みます。 count がデータバッファのサイズ (10kバイト) を超える場合、 データバッファサイズに切り詰められます。 rmt は read(2) システムコールを実行し、読み込みが成功すると Acount-read\n と返答します。そうでなければ、 標準的な形式でエラーが返却されます。読み込みが成功すると、読み込まれたデータ は要求元に送信されます。

Ioperation
    \ncount\n 指定された引数を用いて ioctl(2) の MTIOCOP リクエストを実行します。引数は、10 進の ASCII 表現に置き換えられ、 ioctl(2) で使用する構造体のメンバ mt_op および mt_count にそれぞれ格納されます。操作が成功した場合の返却値は、引数 count の値です。

S   ioctl(2) システムコールの MTIOCGET リクエストを用い、オープンされている デバイスの状態を返却します。操作が成功すると、ステータスバッファのサイズと ともに ``ack'' が送信されます。それからステータスバッファが (バイナリ形式で) 送信されます。

上記以外のコマンドを rmt が受信した場合、 rmt は終了します。

診断
全ての返答は、上記の通りです。

関連項目
rcmd(3), rexec(3), mtio(4), rdump(8), rrestore(8)

バグ
本コマンドをリモートファイルアクセスプロトコルとして使用しないで下さい。

歴史
rmt コマンドは 4.2BSD から登場しました。