我一直在浏览互联网上的几个网站,实际上想知道我们如何在.x文件中编写规范以在用于 RPC 的.c文件。我访问的每个站点都建议在*.x文件中使用以下类型的规范:
program ADD_PROG {
version ADD_VERS {
int ADD(intpair) = 1;
} = 1;
} = 0x23451111;
因此,为了实际理解,我从一个名为 ganglia 的开源项目中获得了gm_protocol.x ,并使用 rpcgen生成了等效的 C 源代码 ( gm_protocol_xdr.c ) 和 C 头文件 ( gm_protocol.h )。
[rohit@ganglia-server rpc]$ rpcgen -C gm_protocol.x
[rohit@ganglia-server rpc]$
[rohit@ganglia-server rpc]$ ll
total 24
-rw-rw-r-- 1 rohit rohit 5786 Oct 28 17:52 gm_protocol.h
-rw-rw-r-- 1 rohit rohit 3485 Oct 28 15:04 gm_protocol.x
-rw-rw-r-- 1 rohit rohit 8213 Oct 28 17:52 gm_protocol_xdr.c
令我惊讶的是,根据我的学习和理解,gm_protocol.x 不包含任何如上面代码所示的 RPC 规范,但它仍然可以在文件 gm_protocol_xdr.c 中生成太多函数。
可以肯定的是,我无法理解 XDR 规范,因为要么我查阅了错误的来源,要么它们已经过时了。我找不到任何可以解释生成函数的方法的教程(尽管我找到了生成结构、枚举、联合等的规范)。
请帮助学习这些规范。