これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド rpcgen です。
プログラム:
NAME
rpcgen - RPC プロトコル コンパイラ
SYNOPSIS
rpcgen ファイル内
rpcgen [-NS名[=値]] [-T] [-K ドライ] ファイル内
rpcgen -c|-h|-l|-m|-M|-t [-または アウトファイル ] ファイル内
rpcgen [-私] -s ネットタイプ [-または アウトファイル] ファイル内
rpcgen -n ネットID [-または アウトファイル] ファイル内
DESCRIPTION
rpcgen は、RPC プロトコルを実装するための C コードを生成するツールです。 への入力 rpcgen
は、RPC 言語 (リモート プロシージャ コール言語) として知られる C に似た言語です。
rpcgen 通常、最初の概要のように、入力ファイルを受け取り、
最大 XNUMX つの出力ファイルを生成します。 もし ファイル内 という名前 proto.xをタップし、その後、 rpcgen 意志
にヘッダー ファイルを生成します proto.h、XDR ルーチン proto_xdr.c、サーバー側のスタブ
proto_svc.c、およびクライアント側のスタブ proto_clnt.c。 とともに -T オプションで、それも行われます
RPCディスパッチテーブルを生成します proto_tbl.i。 とともに -Sc オプションで、それも行われます
クライアント上でリモート プロシージャを使用する方法を示すサンプル コードを生成します。
側。 このコードは次のように作成されます。 proto_client.c。 とともに -H.H オプションで、それも行われます
リモート プロシージャの記述方法を示すサンプル サーバー コードを生成します。
このコードは次のように作成されます。 proto_server.c.
作成されたサーバーは、ポート モニターの両方によって起動できます (たとえば、 inetd or 聞く)
またはそれ自体で。 ポート モニターによって開始されると、ポート モニター専用のサーバーが作成されます。
ファイル記述子のトランスポート 0 を超えてた。 トランスポートの名前は次のとおりです。
環境変数の設定によって指定される PM_TRANSPORT。 サーバーが
によって生成されます rpcgen が実行されると、すべてのトランスポートのサーバー ハンドルが作成されます
で指定 ネットパス 環境変数、または設定されていない場合はサーバー ハンドルを作成します
すべての目に見えるトランスポートに対して、 /etc/netconfig ファイル。 注: トランスポートが選択されています
コンパイル時ではなく実行時です。
ポートモニター用に構築された場合 (rpcgen -I)、サーバーは自己起動型であるため、
デフォルトでは背景そのもの。 特別な定義シンボル RPC_SVC_FG を実行するために使用できます
フォアグラウンドのサーバープロセス。
XNUMX 番目の概要は、より多くの作品を作成できる特別な機能を提供します。
洗練された RPC サーバー。 これらの機能には、ユーザーが提供するサポートが含まれます #定義
RPC ディスパッチ テーブル。 RPC ディスパッチ テーブルのエントリには次のものが含まれます。
· そのプロシージャに対応するサービス ルーチンへのポインタ、
· 入力引数と出力引数へのポインタ
· これらのルーチンのサイズ
サーバーはディスパッチテーブルを使用して認可を確認し、サービスを実行できます。
ルーティーン; クライアント ライブラリは、ストレージ管理の詳細を処理するためにこれを使用する場合があります。
XDRデータ変換。
上に示した他の XNUMX つのシノプシスは、すべてのデータを生成したくない場合に使用されます。
出力ファイルですが、特定のファイルのみです。 それらの使用例のいくつかは、「」で説明されています。
以下の例セクション。 いつ rpcgen で実行されます -s オプションで、サーバーを作成します
その特定のクラスのトランスポート。 で実行すると、 -n オプションを選択すると、
によって指定されたトランスポート用のサーバー ネットID。 場合 ファイル内 指定されていません、 rpcgen 受け入れる
標準入力。
C プリプロセッサ、 cc -E [見る cc(1)] は、実際に実行される前に入力ファイルに対して実行されます。
によって解釈される rpcgen。 出力ファイルの種類ごとに、 rpcgen 特別なものを定義します
によって使用されるプリプロセッサ シンボル rpcgen プログラマー:
RPC_HDR ヘッダー ファイルにコンパイルするときに定義されます
RPC_XDR XDR ルーチンにコンパイルするときに定義される
RPC_SVC サーバー側のスタブにコンパイルするときに定義されます
RPC_CLNT クライアント側のスタブにコンパイルするときに定義されます
RPC_TBL RPC ディスパッチテーブルにコンパイルするときに定義されます
` で始まる任意の行%' は解釈されずに出力ファイルに直接渡されます。
rpcgen.
で参照されるすべてのデータ型について ファイル内, rpcgen というルーチンが存在すると仮定します。
文字列 xdr_ データ型の名前の前に付加されます。 このルーチンが存在しない場合は、
RPC/XDR ライブラリを提供する必要があります。 未定義のデータ型を指定すると、
XDR ルーチンのカスタマイズ。
次のオプションを使用できます。
-a クライアント側とサーバー側のサンプル コードを含むすべてのファイルを生成します。
-b これにより、SunOS4.1 スタイルの rpc のコードが生成されます。 後進用です
互換性。 これがデフォルトです。
-5 これにより、SysVr4 スタイルの rpc のコードが生成されます。 トランスポートによって使用されます
Svr4 システムにある独立した RPC。 デフォルトでは、rpcgen は次のコードを生成します。
SunOS4.1 の rpc タイプ。
-c XDR ルーチンにコンパイルします。
-C ANSI C でコードを生成します。このオプションは、コンパイル可能なコードも生成します。
C++ コンパイラを使用して。 これがデフォルトです。
-k K&R C でコードを生成します。デフォルトは ANSI C です。
-D名[=値]
シンボルを定義する 名。 と同等 #定義する ソース内のディレクティブ。 いいえの場合
値 与えられる、 値 として定義される 1。 このオプションは複数指定できます。
一度。
-h にコンパイルします C データ定義 (ヘッダー ファイル)。 -T オプションは以下で使用できます
RPC ディスパッチ テーブルをサポートするヘッダー ファイルを生成するために結合します。
-I inetdから起動できるサービスを生成します。 デフォルトでは、
で選択されたトランスポートを処理する静的サービス -s。 使い方 -I 起動を許可します
いずれかの方法によるサービス。
-K ドライ
デフォルトでは、次を使用して作成されたサービスは、 rpcgen wait 120 サービスを行ってから数秒後
終了する前にリクエストしてください。 この間隔は、 -K 国旗。 作成するには
リクエストを処理するとすぐに終了するサーバー、 -K 0 に使える。 に
決して終了しないサーバーを作成する場合、適切な引数は次のとおりです。 -K -1.
サーバーを監視する場合、次のような一部のポート監視が行われます。 聞く(1万)、 常に をスポーンする
サービスリクエストに応じた新しいプロセス。 サーバーが次の状態になることがわかっている場合
このようなモニターで使用すると、サーバーは完了時にすぐに終了する必要があります。 ために
そのようなサーバー、 rpcgen と一緒に使用する必要があります -K -1.
-l クライアント側のスタブにコンパイルします。
-m サーバー側のスタブにコンパイルしますが、「メイン」ルーチンは生成しません。 このオプション
コールバック ルーチンを実行する場合や、独自のルーチンを作成する必要があるユーザーにとって便利です。
初期化を行う「メイン」ルーチン。
-M rpcgen 間で引数と結果を渡すためのマルチスレッドセーフなスタブを生成します。
生成されたコードとユーザーが作成したコード。 このオプションは、次のことを行うユーザーに役立ちます。
コード内でスレッドを使用します。
-n ネットID
で指定されたトランスポートのサーバー側スタブにコンパイルします。 ネットID。 あるはずです
のエントリーになる ネットID netconfig データベース内。 このオプションはさらに指定することもできます
複数のトランスポートを提供するサーバーをコンパイルするために、複数のトランスポートを実行します。
-N rpcgen の新しいスタイルを使用します。 これにより、プロシージャに複数の引数を指定できるようになります。 それ
また、C によく似たパラメータ受け渡しのスタイルも使用します。
引数をリモート プロシージャに渡す場合、ポインタをリモート プロシージャに渡す必要はありません。
引数ではなく引数そのもの。 この動作は、古いスタイルの動作とは異なります。
rpcgen で生成されたコード。 newstyle は後進のためデフォルトのケースではありません
互換性。
-o アウトファイル
出力ファイルの名前を指定します。 何も指定されていない場合は、標準出力が使用されます。
(-c, -h, -l, -m, -n, -s, -Sc, -SM, -H.H, -t モードのみ)。
-s ネットタイプ
クラスに属するすべてのトランスポートのサーバー側スタブにコンパイルします。
ネットタイプ。 サポートされているクラスは、 ネットパス, 目に見える, 回路_n, 回路_v,
データグラム_n, データグラム_v, TCP, UDP [見る rpc(3N) に関連付けられた意味については、
これらのクラス]。 このオプションは複数回指定できます。 注: トランスポート
コンパイル時ではなく実行時に選択されます。
-Sc リモート プロシージャの使用方法と、リモート プロシージャにバインドする方法を示すサンプル コードを生成します。
rpcgen によって生成されたクライアント側のスタブを呼び出す前に、サーバーにアクセスします。
-SM アプリケーションのコンパイルに使用できるサンプル Makefile を生成します。
-H.H サーバー側でリモート プロシージャのスケルトン コードを生成します。 するでしょう
リモート プロシージャの実際のコードを入力する必要があります。
-t RPC ディスパッチ テーブルにコンパイルします。
-T RPC ディスパッチ テーブルをサポートするコードを生成します。
オプション -c, -h, -l, -m, -s -t 特定の型を生成するためにのみ使用されます
ファイルのオプション -D -T はグローバルであり、他のオプションと一緒に使用できます。
注意事項
RPC 言語は構造のネストをサポートしていません。 回避策として、構造物では次のことが可能です。
トップレベルで宣言され、その名前は他の構造内で使用されます。
同じ効果が得られます。
プログラム定義を使用すると、見かけ上のスコープが設定されていないため、名前の衝突が発生する可能性があります。
本当に当てはまります。 これらのほとんどは、プログラム、バージョン、
手順と種類。
で生成されたサーバーコード -n オプションは、によって示されるトランスポートを指します。 ネットID
したがって、非常にサイト固有です。
実施例
次の例:
$ rpcgen -T prot.x
次の XNUMX つのファイルを生成します。 保護, prot_clnt.c, prot_svc.c, prot_xdr.c prot_tbl.i.
次の例では、C データ定義 (ヘッダー ファイル) を標準出力に送信します。
$ rpcgen -h prot.x
テスト版を送信するには、 -DTEST、すべてのトランスポートに属するサーバー側のスタブ
クラスへ データグラム_n 標準出力には、以下を使用します。
$ rpcgen -s データグラム_n -DTEST prot.x
で示されるトランスポートのサーバー側スタブを作成するには ネットID TCP、 つかいます:
$ rpcgen -n TCP -o prot_svc.c prot.x
onworks.net サービスを使用してオンラインで rpcgen を使用する
