Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

       rpcgen - RPC プロトコルコンパイラ

書式

       rpcgen infile
       rpcgen [-Dname[=value]] [-T] [-K secs] infile
       rpcgen -c|-h|-l|-m|-t [-o outfile ] infile
       rpcgen [-I] -s nettype [-o outfile] infile
       rpcgen -n netid [-o outfile] infile

説明

       rpcgen  は RPC プロトコルを実装する C 言語のコードを生成するツールである。 rpcgen への入力
       は RPC 言語 (遠隔手続き呼び出し言語 Remote Procedure Call Language) として知られる C  言語
       に似た言語である。

       rpcgen は通常、1 つの入力ファイルを受け取って 4 つの出力ファイルを生成する、 第 1 の書式で
       使われる。 入力ファイル infileproto.x という名前である場合、  rpcgen  はヘッダファイル
       proto.h、  XDR  ルーチン  proto_xdr.c、  サーバ側スタブ proto_svc.c、 クライアント側スタブ
       proto_clnt.c  を生成する。  -T  オプションを指定すると、さらに  RPC   ディスパッチテーブル
       nproto_tbl.i も生成する。 -Sc オプションを指定すると、クライアント側での遠隔手続きの使用法
       を説明する サンプルコードも生成する。 このコードは proto_client.c に書き出される。 -Ss  オ
       プションを指定すると、 遠隔手続きの書き方を説明するサンプルのサーバ用コードを生成する。 こ
       のコードは proto_server.c に書き出される。

       生成されたサーバは、 ポートモニタ (例えば inetdlisten) で起動することも、 それ自身で起
       動することもできる。  ポートモニタで起動される場合、 ファイルディスクリプタ 0 を引き渡すト
       ランスポートのためだけの サーバを生成する。 トランスポートの名前は環境変数 PM_TRANSPORT を
       設定することで指定しなければならない。  rpcgen で作成されたサーバが実行されると、 サーバは
       環境変数 NETPATH  で指定された全てのトランスポート用にサーバハンドルを生成する。  環境変数
       NETPATH が設定されていない場合、 /etc/netconfig ファイルに記述された全ての可視トランスポー
       ト用にサーバハンドルを生成する。 注意:  トランスポートはコンパイル時ではなく実行時に選択さ
       れる。  サーバが自分自身で開始する場合、 デフォルトではバックグラウンド実行に移る。 サーバ
       プロセスをフォアグラウンドで実行するには、 特殊定義シンボル RPC_SVC_FG が使われる。

       第 2 の書式は、より洗練された  RPC  サーバを生成する特別な機能を提供する。  これらの機能に
       は、ユーザー定義の  #define  と  RPC ディスパッチテーブルのサポートが含まれる。 RPC ディス
       パッチテーブルのエントリには以下のものがある。
              •  その手続きに対応するサービスルーチンへのポインタ
              •  入出力引き数へのポインタ
              •  これらのルーチンのサイズ
       サーバは、認証をチェックした後にサービスルーチンを実行するために、  ディスパッチテーブルを
       使うことができる。 クライアントライブラリは、記憶領域管理と XDR データ変換を詳細に扱うため
       に、 ディスパッチテーブルを使うことができる。

       上で示した他の 3 つの書式は、 全ての出力ファイルではなく、特定の 1  つのファイルが必要な場
       合に使われる。  いくつかの使用例が以下の「例」のセクションで説明されている。  rpcgen-s
       オプション付きで実行された場合、 特定クラスのトランスポート用のサーバを生成する。 -n  オプ
       ション付きで実行された場合、  netid  で指定したトランスポート用のサーバを生成する。 infile
       が指定されていない場合、 rpcgen は標準入力から入力を受け付ける。

       入力ファイルが rpcgen によって実際に処理される前に、C プリプロセッサ cc -E [cc(1)  を参照]
       が実行される。 rpcgen は各タイプの出力ファイルに対して、 rpcgen プログラマが使う特別なプリ
       プロセッサシンボルを定義する。

       RPC_HDR     ヘッダファイルにコンパイルする際に定義される。
       RPC_XDR     XDR ルーチンにコンパイルする際に定義される。
       RPC_SVC     サーバ側スタブにコンパイルする際に定義される。
       RPC_CLNT    クライアント側スタブにコンパイルする際に定義される。
       RPC_TBL     RPC ディスパッチテーブルにコンパイルする際に定義される。

       `%' で始まる全ての行は、 rpcgen に解釈されることなく、出力ファイルに直接そのまま渡される。

       infile で参照される全てのデータタイプに対して、 rpcgen はデータタイプ名の前に xdr_  を付け
       た名前のルーチンが存在することを仮定する。  このルーチンが  RPC/XDR ライブラリにない場合、
       そのルーチンを提供しなければならない。 未定義のデータタイプを提供することで XDR ルーチンを
       カスタマイズすることができる。

       以下のオプションが使用可能である。

       -a     クライアント側とサーバ側のサンプルコードを含む全てのファイルを生成する。

       -b     SunOS4.1 スタイルの RPC コードを生成する。 昔のコードとの互換性のためにある。これが
              デフォルトである。

       -5     SysVr4 スタイルの RPC コードを生成する。 これは  Svr4  システムのトランスポート独立
              RPC  (Transport Independent RPC) で使われる。 デフォルトでは rpcgen は、SunOS4.1 ス
              タイルの RPC コードを生成する。

       -c     コンパイルして XDR ルーチンを生成する。

       -C     ANSI C のコードを生成する。 このオプションは C++ コンパイラでもコンパイルできるコー
              ドを生成する。 これがデフォルトである。

       -k     K&R C のコードを生成する。デフォルトは ANSI C である。

       -Dname[=value]
              シンボル name を定義する。 ソース中の #define ディレクティブと同じ。 value が与えら
              れていない場合、 value1 と定義される。 このオプションは複数回指定してもよい。

       -h     コンパイルして C 言語のデータ定義 (ヘッダファイル)  を生成する。  RPC  ディスパッチ
              テーブルをサポートするヘッダファイルを生成したい場合は、  -T オプションを同時に指定
              すること。

       -I     inetd から起動できるサービスを生成する。 デフォルトでは、-s  オプションで選択される
              トランスポートを処理する、 静的サービスを生成する。 -I を使うことで、サービスをどち
              らの方法でも起動できるようになる。

       -K secs
              デフォルトでは、rpcgen で生成されたサービスは、 リクエストを処理した後 120 秒待って
              終了する。  この待機時間は -K フラグを使って変更できる。 リクエストを処理した後すぐ
              に終了するサーバを生成するには、 -K 0 を指定すること。 決して終了しないサーバを生成
              するには、 適切な引き数である -K -1 を指定すること。

              サーバをモニタリングしている場合、ある種のポートモニタ、例えば  listen(1M) のような
              ものは、サービスリクエストに応答して 常に 新しいプロセスを生成する。 サーバがそのよ
              うなモニタとともに使われることが分かっている場合、 サーバは処理の完了後すぐに終了す
              べきである。 そのようなサーバを生成するためには、 rpcgen-K -1  オプション付きで
              使うべきである。

       -l     コンパイルしてクライアント側スタブを生成する。

       -m     コンパイルしてサーバ側スタブファイルを生成するが、 “main” ルーチンは作成しない。 こ
              のオプションは、コールバックルーチンを作成する場合や、     初期化を行うために独自の
              “main” ルーチンを記述する必要がある ユーザーにとって役に立つ。

       -n netid
              コンパイルして     netid     で指定したトランスポート用のサーバ側スタブを生成する。
              netconfig データベースに  netid  用のエントリが存在する必要がある。  複数のトランス
              ポートに対してサービスを行うサーバを作成するために、 このオプションを複数回指定する
              ことができる。

       -N     新しいスタイルの rpcgen  を使う。手続きが複数の引き数を持てるようにする。  これはま
              た、C 言語にとてもよく似たパラメータ渡しの方法を用いる。 これにより、遠隔手続きに引
              き数を渡す場合に、引き数へのポインタではなく 引き数そのものを渡すことができる。  こ
              の動作は、以前のスタイルの rpcgen が生成したコードによるものとは異なる。 以前のもの
              との互換性のため、新しいスタイルはデフォルトになっていない。

       -o outfile
              出力ファイル名を指定する。 何も指定されない場合、標準出力に書き出す  (-c,  -h,  -l,
              -m, -n, -s, -Sc, -Ss, -t モード時のみ)。

       -s nettype
              コンパイルして nettype クラスに属する全てのトランスポート用のサーバ側スタブを生成す
              る。  サポートされているクラスは以下の通りである。  netpath,  visible,   circuit_n,
              circuit_v, datagram_n, datagram_v, tcp, udp [これらのクラスに関連づけられた意味につ
              いては、 rpc(3N) を参照すること]。 このオプションは複数回指定することができる。  注
              意: トランスポートはコンパイル時ではなく実行時に選択される。

       -Sc    遠隔手続きの使用法と、rpcgen  で生成されたクライアント側スタブを 呼び出す前にサーバ
              をバインドする方法を説明するサンプルコードを生成する。

       -Ss    サーバ側遠隔手続きの骨組みとなるコードを生成する。 遠隔手続きの実際のコードを記述す
              る必要がある。

       -t     コンパイルして RPC ディスパッチテーブルを生成する。

       -T     RPC ディスパッチテーブルをサポートするコードを生成する。

       オプション  -c, -h, -l, -m, -s, -t は、特定のタイプのファイルを生成するために、どれか 1 つ
       を単独で使う。 一方、オプション -D-T  は、グローバルオプションで、他のオプションととも
       に使うことができる。

注意

       RPC 言語は構造体の入れ子構造をサポートしない。 対処法として 同様の効果を得るために、構造体
       をトップレベルで宣言し、 その構造体名を他の構造体の中で使うことができる。

       明確な名前スコープが実際に適応されていないため、  プログラム定義の使用中に名前の衝突が起き
       る場合がある。 この問題の大部分は、プログラム・バージョン・手続き・タイプに対して 固有の名
       前を付けることで回避できる。

       -n オプションで生成されたサーバ用コードは、  netid  で指定されたトランスポートを参照するの
       で、 非常にサイト依存したものになる。

       以下の例:

              $ rpcgen -T prot.x

       は 5 つのファイル: prot.h, prot_clnt.c, prot_svc.c, prot_xdr.c, prot_tbl.i を生成する。

       以下の例では、C 言語のデータ定義 (ヘッダファイル) が標準出力に送られる。

              $ rpcgen -h prot.x

       datagram_n  クラスに属する全トランスポート用のサーバ側スタブのテストバージョン -DTEST を標
       準出力に書き出すためには、以下のようにすること:

              $ rpcgen -s datagram_n -DTEST prot.x

       netid tcp で指定されたトランスポート用のサーバ側スタブを生成するためには、  以下のようにす
       ること:

              $ rpcgen -n tcp -o prot_svc.c prot.x

関連項目

       cc(1)

翻訳者謝辞

       この  man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/>
       による翻訳を参考にさせていただいた。

                                                                                               0a