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 指定されたデバイスを、 mode で指定された属性でオープンします。デバイスはフルパスで指定され、 mode は open(2) で用いられる 10 進の ASCII 表現です。すでにデバイスがオープンされていた場合、 そのデバイスは一旦クローズされ、再びオープンされます。

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

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

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

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

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

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

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

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

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

バグ
本コマンドを用いてリモートファイルアクセスを試みようとすると、 期待外れに終ります。

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