Man page - rpcgen(1)

Packages contains this manual

Available languages:

en ja

Manual

rpcgen

名 前
書 式
説 明
注 意

関 連 項 目
翻 訳 者 謝 辞

名 前

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

書 式

rpcgen infile
rpcgen [-D
name [= 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 の 書 式 で 使 わ れ る 。 入 力 フ ァ イ ル infile proto.x と い う 名 前 で あ る 場 合 、 rpcgen は ヘ ッ ダ フ ァ イ ル proto.h 、 XDR ル ー チ ン proto_xdr.c 、 サ ー バ 側 ス タ ブ proto_svc.c 、 ク ラ イ ア ン ト 側 ス タ ブ proto_clnt.c を 生 成 す る 。 -T オ プ シ ョ ン を 指 定 す る と 、 さ ら に RPC デ ィ ス パ ッ チ テ ー ブ ル n proto_tbl.i も 生 成 す る 。 -Sc オ プ シ ョ ン を 指 定 す る と 、 ク ラ イ ア ン ト 側 で の 遠 隔 手 続 き の 使 用 法 を 説 明 す る サ ン プ ル コ ー ド も 生 成 す る 。 こ の コ ー ド は proto_client.c に 書 き 出 さ れ る 。 -Ss オ プ シ ョ ン を 指 定 す る と 、 遠 隔 手 続 き の 書 き 方 を 説 明 す る サ ン プ ル の サ ー バ 用 コ ー ド を 生 成 す る 。 こ の コ ー ド は proto_server.c に 書 き 出 さ れ る 。

生 成 さ れ た サ ー バ は 、 ポ ー ト モ ニ タ (例 え ば inetd listen ) で 起 動 す る こ と も 、 そ れ 自 身 で 起 動 す る こ と も で き る 。 ポ ー ト モ ニ タ で 起 動 さ れ る 場 合 、 フ ァ イ ル デ ィ ス ク リ プ タ 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 で あ る 。

-D name [= value ]

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

-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/> に よ る 翻 訳 を 参 考 に さ せ て い た だ い た 。