web-dev-qa-db-ja.com

/ usr / includeにある.xファイルは何ですか?

私の/usr/includeには、.xなど、/usr/include/rpcsvc/rquota.xファイル拡張子が付いたファイルがいくつか含まれています。

それらはCソースのように見えますが(file /usr/include/rpcsvc/rquota.xを実行するとC source, ASCII textが生成されます)、有効なCではありません(例:programおよびversionはキーワードと思われます)。

彼らは正確には何ですか?短い拡張子を考えるとグーグルするのは難しく、一部のウェブサイトは間違っている/不完全です(例 Wikipedia は「古いDirectXファイル」と言います)。

7
anol

これらは SunRPC ベースのプロトコル(RPCはリモートプロシージャコールの略)の説明です。通常、各ファイルには、これらのRPCで使用されるデータ構造と、それらを実装するプログラムが記述されています。たとえば、_yppasswd.x_はイエローページのパスワード更新プロトコルを表し、比較的理解しやすいものです。

_program YPPASSWDPROG {
        version YPPASSWDVERS {
                /*
                 * Update my passwd entry
                 */
                int
                YPPASSWDPROC_UPDATE(yppasswd) = 1;
        } = 1;
} = 100009;


struct passwd {
        string pw_name<>;       /* username */
        string pw_passwd<>;     /* encrypted password */
        int pw_uid;             /* user id */
        int pw_gid;             /* group id */
        string pw_gecos<>;      /* in real life name */
        string pw_dir<>;        /* home directory */
        string pw_Shell<>;      /* default Shell */
};

struct yppasswd {
        string oldpass<>;       /* unencrypted old password */
        passwd newpw;           /* new passwd entry */
};
_

これは、RPC YPパスワード更新手順を宣言します。これは、yppasswd構造体を引数として取り、intを返します。このファイルには、使用するyppasswd構造とともに、passwd構造自体も記述されています。

これらのファイルは通常、rpcgenとともに使用されます。これにより、スタブサーバーとクライアントコードが生成され、プロトコルやRPCクライアント用のRPCサーバーを実装するために使用できます。クライアントとサーバーのサンプルコードを生成することもできます。

Kusalananda で示されているように、 rpcgen(1) のマンページに詳細情報があります。

13
Stephen Kitt

Linuxシステムのrpcgenマニュアルのスニペット:

   rpcgen is a tool that generates C code to implement an RPC protocol.  The
   input to rpcgen is a language similar to C known as RPC Language  (Remote
   Procedure Call Language).

   rpcgen  is normally used as in the first synopsis where it takes an input
   file and generates up to four output  files.   If  the  infile  is  named
   proto.x, then rpcgen will generate a header file in proto.h, XDR routines
   in proto_xdr.c, server-side stubs in proto_svc.c, and  client-side  stubs
   in  proto_clnt.c.

見る man rpcgen

6
Kusalananda