RPCGEN(1)

名称
rpcgen - RPC プロトコルを解釈する C 言語コードを出力する

書式
rpcgen infile rpcgen -c | -h | -l | -m [-o outfile] [infile] rpcgen -s transport [-o outfile] [infile]

解説
rpcgen は、 RPC (Remote Procedure Call) プロトコルを実装するための C 言語 コードを出力するツールです。 rpcgen の入力は、 RPC 言語 (Remote Procedure Call Language) として知られる C 言語に類似した言語コードです。 RPC 言語の文法に関する情報は rpcgen Programming Guide にあります。

rpcgen は通常、第 1 の形式で使用され、入力ファイルから 4 つの出力ファイルを 生成します。入力ファイル infile が proto.x であるとすると、 rpcgen はヘッダファイル proto.h、 XDR ルーチンファイル proto_xdr.c 、サーバ側スタブ proto_svc.c 、クライアント側スタブ proto_clnt.c を作成します。

他の形式は、上記の 4 つのファイルすべてを必要としない場合に用いられます。

rpcgen で処理する前に、すべての入力ファイルは C 言語プリプロセッサ cpp(1) で処理されます。 rpcgen ファイルではすべての cpp 命令が使用可能です。 rpcgen を利用するプログラマのために、 rpcgen は出力ファイル中で以下の cpp シンボルを定義します。

RPC_HDR
    ヘッダファイルをコンパイルする時に定義します。
RPC_XDR
    XDR ルーチンをコンパイルする時に定義します。
RPC_SVC
    サーバ側スタブをコンパイルする時に定義します。
RPC_CLNT
    クライアント側スタブをコンパイルする時に定義します。

さらに、 rpcgen は ‘%’ で始まる行を解釈せず、そのまま出力ファイルに出力します。

プログラマはデータ型を未定義とすることで、独自の XDR ルーチンを使用す ることができます。 rpcgen は、未定義型のデータに対して ‘xdr_データ型名’ なるルーチンが用意されていると仮定してコードを出力します。

オプション

-c  XDR ルーチンを出力します。

-h  ヘッダファイルを出力します。

-l  クライアント側スタブを出力します。

-m  サーバ側スタブを出力します。ただし、 main() ルーチンは出力しません。 コールバックルーチンのみを作成したり、初期化を行うために独自の main() ルーチンを必要とする場合に便利です。

-o outfile
    出力ファイル名を指定します。 -c 、 -h 、 -l 、 -s オプションが指定されている 場合や、出力ファイル名が指定されない場合は、標準出力が用いられます。

-s transport
    指定されたトランスポートを利用したサーバ側スタブを出力します。 トランスポートとしては udp と tcp を指定することができます。複数のトランスポート に対応したサーバを作成するために本オプションを指定し、複数回 rpcgen を 起動します。

使用例

    $ rpcgen /usr/include/rpcsvc/yp.x

関連項目
cpp(1) rpcgen Programming Guide.

バグ
ネストはサポートされません。同様の効果を得るために、構造体を トップレベルで宣言し、その名前を他の構造体のなかで用いることができます。

はっきりしたスコーピング規則が適用されていないため、プログラム定義において 名前の衝突が起きる可能性があります。これを避けるためには、プログラム、 バージョン、手続き、型に別々の名前を用いるようにします。