Was sind die .x-Dateien in / usr / include?


7

Mein /usr/includeenthält mehrere Dateien mit der .xDateierweiterung, wie z /usr/include/rpcsvc/rquota.x.

Sie scheinen wie C-Quellen zu sein (laufende file /usr/include/rpcsvc/rquota.xErgebnisse in C source, ASCII text), aber sie sind kein gültiges C (z. B. programund versionscheinen Schlüsselwörter zu sein).

Was sind sie genau? Angesichts der kurzen Erweiterung ist es schwierig zu googeln, und einige Websites sind einfach falsch / unvollständig (z. B. sagt Wikipedia "alte DirectX-Dateien").

Antworten:


13

Dies sind Beschreibungen von SunRPC- basierten Protokollen (RPC steht für Remote Procedure Call). Jede Datei beschreibt normalerweise Datenstrukturen, die von diesen RPCs verwendet werden, und Programme, die sie implementieren. yppasswd.xBeschreibt beispielsweise das Protokoll zur Aktualisierung des Passworts für die Gelben Seiten und ist relativ einfach zu verstehen:

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 */
};

Dies deklariert eine RPC YP-Kennwortaktualisierungsprozedur, die eine yppasswdStruktur als Argument verwendet und eine zurückgibt int. Die Datei beschreibt auch die yppasswdStruktur selbst sowie die verwendete passwdStruktur.

Diese Dateien werden im Allgemeinen verwendet rpcgen, um Stub-Server- und Client-Code zu generieren, der dann zum Implementieren eines RPC-Servers für das Protokoll und / oder eines RPC-Clients verwendet werden kann. Es kann sogar Beispiel-Client- und Servercode generieren.

Wie von Kusalananda angegeben , enthält die rpcgen(1)Manpage weitere Informationen.


6

Ausschnitt aus dem rpcgenHandbuch auf einem Linux-System:

   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.

Siehe man rpcgen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.