RPCGEN(1) FreeBSD 一般コマンドマニュアル RPCGEN(1)
名称
rpcgen − RPC プロトコルコンパイラ |
書式
rpcgen infile |
rpcgen [−a] [−b] [−C] [ |
−Dname[=value]] [−i size] [−I −P [−K seconds]][−L] [−M] [−N] [−T] [−Y pathname] infile
rpcgen [ 解説 |
rpcgen ユーティリティは、ある RPC プロトコルを実現する C コードを生成する ツールです。 rpcgen への入力は、 RPC 言語 (遠隔手続き呼び出し言語; Remote Procedure Call Language) として知られる、 C 言語に類似した言語です。 rpcgen ユーティリティは通常第 1 の書式で使用され、 1 つの入力ファイルから 4 つの出力ファイルを生成します。入力ファイル infile が proto.x であるとす ると、 rpcgen はヘッダファイル proto.h 、 XDR ルーチンファイル proto_xdr.c 、サーバ側スタブ proto_svc.c 、クライアント側スタブ proto_clnt.c を作成します。 −T オプションを指定すると、上記に加え、 RPC ディスパッチテーブル proto_tbl.i も作成します。 rpcgen ユーティリティはまた、特定アプリケーション向けにカスタマイズ可能な クライアントおよびサーバのサンプルファイルも生成できます。オプション −Sc, −Ss, −Sm によってそれぞれ、サンプルのクライアント、サーバ、makefile を生 成します。オプション −a を指定するとサンプルを含め全てのファイルを生成し ます。入力ファイル infile が proto.x の場合、クライアント側サンプルファイ ルは proto_client.c に、サーバ側サンプルファイルは proto_server.c に、そ してサンプル makefile は makefile.proto に書き出されます。 オプション −I が設定されている場合、生成されたサーバは、ポートモニタ (例 えば inetd(8) ) で起動することも、それ自身で起動することもできます。ポー トモニタから起動される場合、ファイル記述子 0 を引き渡すトランスポートのた めだけのサーバを生成します。トランスポートの名前は環境変数 NLSPROVIDER を セットすることで指定可能です。 rpcgen で作成されたサーバが実行されると、 サーバは環境変数 NETPATH で指定された全トランスポート用にサーバハンドルを 作成します。 NETPATH が指定されていない場合は、ファイル /etc/netconfig に 記述されている全ての可視トランスポート用にサーバハンドルを作成します。注 意: トランスポートはコンパイル時ではなく実行時に選択されます。サーバが自 分で開始すると、デフォルトでは自動的にバックグラウンド実行に移ります。 RPC_SVC_FG を定義することで、サーバをフォアグラウンドで実行させることもで きます。 第二の書式は、更に洗練された RPC サーバを生成する特別な機能をもちます。そ の特別な機能として、ユーザが定義した #define と RPC ディスパッチテーブル のサポートがあります。 RPC ディスパッチテーブルのエントリには以下のものが あります: |
• その手続きに対応するサービスルーチンへのポインタ
• 入出力引数へのポインタ 上に示した他の 3 つの書式は、出力ファイルの全てではなく、そのうちの特定の ものだけを生成したい場合に用いられます。 rpcgen の使用例については下の 使 用例のセクションを参照して下さい。 −s オプション付きで実行されると、 rpcgen は特定のトランスポートクラス用のサーバを生成します。 −n オプション 付きで実行されると、 rpcgen は netid で指定されたトランスポート用サーバを 生成します。 infile が指定されない場合、 rpcgen は標準入力から入力を受け 付けます。 入力ファイルは、実際に rpcgen に処理される前に、 C プリプロセッサ cc -E で処理されます。 rpcgen は、出力ファイルの各タイプ毎に rpcgen プログラマ 向けの特別なプリプロセッサシンボルを定義します: RPC_HDR RPC_XDR RPC_SVC RPC_CLNT RPC_TBL ‘‘%’’ で始まる行は全て、 rpcgen に解釈されることなく、出力ファイルに直接 引き継がれます。 C プリプロセッサのパス名を指定するには −Y フラグを使用し て下さい。 infile で参照される全てのデータ型に対し、 rpcgen は、そのデータ型名の前に xdr_ を付与した名前のルーチンが存在することを仮定します。このルーチンが RPC/XDR ライブラリ中に存在しない場合は、それを提供しなければなりません。 未定義データ型を提供することで xdr(3) ルーチンをカスタマイズすることが可 能です。 オプション |
オプションは以下の通りです: |
−a
サンプルファイルを含め、全てのファイルを生成します。 −b −c −C −Dname −Dname=value −h −i size 注: FreeBSD プラットホームでの以前の rpcgen と互換性を保つため、 デフォルト値は実際には 0 (つまり、デフォルトではインラインコード は生成しない) となっています。このデフォルト値を上書きするには明 示的に 0 以外の値を指定しなければなりません。 −I クライアントからの未処理リクエストがなければ、 inetd(8) サーバは 120 秒 (デフォルト値) 経過の後、終了します。このデフォルト値は −K オプションにより変更できます。 inetd(8) サーバの全エラーメッセー ジは常に syslog(3) によってログに残されます。 注: ポートモニタと inetd(8) から起動可能なサーバを作成するには、 他のシステムとは異なり、 FreeBSD では本オプションが必要です。 −K seconds サーバをモニタする場合、あるサービスリクエストに対して 常に新しい プロセスを生成するようなポートモニタがあります。そのようなモニタ を用いてサーバを使用することがわかっている場合は、サーバは処理完 了後直ちに終了すべきです。そのようなサーバを生成するには、 rpcgen は −K 0 オプションとともに使用すべきです。 −l −L −m −M −N −n netid −o outfile −P 注: モニタ可能なサーバを作成するには、他のシステムとは異なり、 FreeBSD では本オプションが必要です。 −I オプションが指定された場合、 −P は自動的にオフになります。 −s nettype −Sc −Sm −Ss −t −T ある特定のタイプのファイルを生成するために、以下のオプション −c, −h, −l, −m, −s, −Sc, −Sm, −Ss, −t は排他的に使用されます。他方、 オプション −D と −T は大域的であり、他のオプションと組み合わせて 使用できます。 −Y pathname 使用例 |
以下の例: |
example% rpcgen -T prot.x |
は 5 種類のファイル: prot.h, prot_clnt.c, prot_svc.c, prot_xdr.c, prot_tbl.i の全てを生成します。 次の例は C のデータ定義 (ヘッダ) を標準出力に出力します。 |
example% rpcgen -h prot.x |
−DTEST のテストバージョンを作成するため、クラス datagram_n に属する全トラ ンスポート用サーバ側スタブを標準出力に出力するには次のようにします: |
example% rpcgen -s datagram_n -DTEST prot.x |
netid tcp で指定されたトランスポート用のサーバ側スタブを作成するには次の ようにします: |
example% rpcgen -n tcp -o prot_svc.c prot.x |
関連項目
cc(1), rpc(3), rpc_svc_calls(3), syslog(3), xdr(3), inetd(8) |
NETP マニュアルの rpcgen の章. FreeBSD 10.0 March 28, 1993 FreeBSD 10.0