Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


rpc(3) — Linux manual page

NAME |LIBRARY |SYNOPSIS AND DESCRIPTION |ATTRIBUTES |SEE ALSO |COLOPHON

rpc(3)                   Library Functions Manualrpc(3)

NAME        top

       rpc - library routines for remote procedure calls

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS AND DESCRIPTION        top

       These routines allow C programs to make procedure calls on other       machines across the network.  First, the client calls a procedure       to send a data packet to the server.  Upon receipt of the packet,       the server calls a dispatch routine to perform the requested       service, and then sends back a reply.  Finally, the procedure call       returns to the client.       To take use of these routines, include the header file<rpc/rpc.h>.       The prototypes below make use of the following types:typedef intbool_t;typedef typeof(bool_t (XDR *, void *, ...))  *xdrproc_t;typedef typeof(bool_t (caddr_tresp, struct sockaddr_in *raddr)*resultproc_t;       See the header files for the declarations of theAUTH,CLIENT,SVCXPRT, andXDR types.void auth_destroy(AUTH *auth);              A macro that destroys the authentication information              associated withauth.  Destruction usually involves              deallocation of private data structures.  The use ofauth              is undefined after callingauth_destroy().AUTH *authnone_create(void);              Create and return an RPC authentication handle that passes              nonusable authentication information with each remote              procedure call.  This is the default authentication used by              RPC.AUTH *authunix_create(char *host, uid_tuid, gid_tgid,intn, gid_taup_gids[n]);              Create and return an RPC authentication handle that              contains authentication information.  The parameterhost is              the name of the machine on which the information was              created;uid is the user's user ID;gid is the user's              current group ID;n andaup_gids refer to a counted array              of groups to which the user belongs.  It is easy to              impersonate a user.AUTH *authunix_create_default(void);              Callsauthunix_create() with the appropriate parameters.int callrpc(char *host, unsigned longprognum,unsigned longversnum, unsigned longprocnum,xdrproc_tinproc, const char *in,xdrproc_toutproc, char *out);              Call the remote procedure associated withprognum,versnum,              andprocnum on the machine,host.  The parameterin is the              address of the procedure's argument(s), andout is the              address of where to place the result(s);inproc is used to              encode the procedure's parameters, andoutproc is used to              decode the procedure's results.  This routine returns zero              if it succeeds, or the value ofenum clnt_statcast to an              integer if it fails.  The routineclnt_perrno() is handy              for translating failure statuses into messages.              Warning: calling remote procedures with this routine uses              UDP/IP as a transport; seeclntudp_create() for              restrictions.  You do not have control of timeouts or              authentication using this routine.enum clnt_stat clnt_broadcast(unsigned longprognum,unsigned longversnum, unsigned longprocnum,xdrproc_tinproc, char *in,xdrproc_toutproc, char *out,resultproc_teachresult);              Likecallrpc(), except the call message is broadcast to all              locally connected broadcast nets.  Each time it receives a              response, this routine callseachresult(), whose form is:eachresult(char *out, struct sockaddr_in *addr);              whereout is the same asout passed toclnt_broadcast(),              except that the remote procedure's output is decoded there;addr points to the address of the machine that sent the              results.  Ifeachresult() returns zero,clnt_broadcast()              waits for more replies; otherwise it returns with              appropriate status.              Warning: broadcast sockets are limited in size to the              maximum transfer unit of the data link.  For ethernet, this              value is 1500 bytes.enum clnt_stat clnt_call(CLIENT *clnt, unsigned longprocnum,xdrproc_tinproc, char *in,xdrproc_toutproc, char *out,struct timevaltout);              A macro that calls the remote procedureprocnum associated              with the client handle,clnt, which is obtained with an RPC              client creation routine such asclnt_create().  The              parameterin is the address of the procedure's argument(s),              andout is the address of where to place the result(s);inproc is used to encode the procedure's parameters, andoutproc is used to decode the procedure's results;tout is              the time allowed for results to come back.clnt_destroy(CLIENT *clnt);              A macro that destroys the client's RPC handle.  Destruction              usually involves deallocation of private data structures,              includingclnt itself.  Use ofclnt is undefined after              callingclnt_destroy().  If the RPC library opened the              associated socket, it will close it also.  Otherwise, the              socket remains open.CLIENT *clnt_create(const char *host, unsigned longprog,unsigned longvers, const char *proto);              Generic client creation routine.host identifies the name              of the remote host where the server is located.proto              indicates which kind of transport protocol to use.  The              currently supported values for this field are “udp” and              “tcp”.  Default timeouts are set, but can be modified usingclnt_control().              Warning: using UDP has its shortcomings.  Since UDP-based              RPC messages can hold only up to 8 Kbytes of encoded data,              this transport cannot be used for procedures that take              large arguments or return huge results.bool_t clnt_control(CLIENT *cl, intreq, char *info);              A macro used to change or retrieve various information              about a client object.req indicates the type of              operation, andinfo is a pointer to the information.  For              both UDP and TCP, the supported values ofreq and their              argument types and what they do are:CLSET_TIMEOUTstruct timeval // set total timeoutCLGET_TIMEOUTstruct timeval // get total timeout              Note: if you set the timeout usingclnt_control(), the              timeout parameter passed toclnt_call() will be ignored in              all future calls.CLGET_SERVER_ADDRstruct sockaddr_in                                  // get server's address              The following operations are valid for UDP only:CLSET_RETRY_TIMEOUTstruct timeval // set the retry timeoutCLGET_RETRY_TIMEOUTstruct timeval // get the retry timeout              The retry timeout is the time that "UDP RPC" waits for the              server to reply before retransmitting the request.clnt_freeres(CLIENT *clnt, xdrproc_toutproc, char *out);              A macro that frees any data allocated by the RPC/XDR system              when it decoded the results of an RPC call.  The parameterout is the address of the results, andoutproc is the XDR              routine describing the results.  This routine returns one              if the results were successfully freed, and zero otherwise.void clnt_geterr(CLIENT *clnt, struct rpc_err *errp);              A macro that copies the error structure out of the client              handle to the structure at addresserrp.void clnt_pcreateerror(const char *s);              Print a message to standard error indicating why a client              RPC handle could not be created.  The message is prepended              with strings and a colon.  Used when aclnt_create(),clntraw_create(),clnttcp_create(), orclntudp_create()              call fails.void clnt_perrno(enum clnt_statstat);              Print a message to standard error corresponding to the              condition indicated bystat.  Used aftercallrpc().clnt_perror(CLIENT *clnt, const char *s);              Print a message to standard error indicating why an RPC              call failed;clnt is the handle used to do the call.  The              message is prepended with strings and a colon.  Used afterclnt_call().char *clnt_spcreateerror(const char *s);              Likeclnt_pcreateerror(), except that it returns a string              instead of printing to the standard error.              Bugs: returns pointer to static data that is overwritten on              each call.char *clnt_sperrno(enum clnt_statstat);              Take the same arguments asclnt_perrno(), but instead of              sending a message to the standard error indicating why an              RPC call failed, return a pointer to a string which              contains the message.  The string ends with a NEWLINE.clnt_sperrno() is used instead ofclnt_perrno() if the              program does not have a standard error (as a program              running as a server quite likely does not), or if the              programmer does not want the message to be output withprintf(3), or if a message format different than that              supported byclnt_perrno() is to be used.  Note: unlikeclnt_sperror() andclnt_spcreateerror(),clnt_sperrno()              returns pointer to static data, but the result will not get              overwritten on each call.char *clnt_sperror(CLIENT *rpch, const char *s);              Likeclnt_perror(), except that (likeclnt_sperrno()) it              returns a string instead of printing to standard error.              Bugs: returns pointer to static data that is overwritten on              each call.CLIENT *clntraw_create(unsigned longprognum, unsigned longversnum);              This routine creates a toy RPC client for the remote              programprognum, versionversnum.  The transport used to              pass messages to the service is actually a buffer within              the process's address space, so the corresponding RPC              server should live in the same address space; seesvcraw_create().  This allows simulation of RPC and              acquisition of RPC overheads, such as round trip times,              without any kernel interference.  This routine returns NULL              if it fails.CLIENT *clnttcp_create(struct sockaddr_in *addr,unsigned longprognum, unsigned longversnum,int *sockp, unsigned intsendsz, unsigned intrecvsz);              This routine creates an RPC client for the remote programprognum, versionversnum; the client uses TCP/IP as a              transport.  The remote program is located at Internet              address*addr.  Ifaddr->sin_port is zero, then it is set              to the actual port that the remote program is listening on              (the remoteportmapservice is consulted for this              information).  The parametersockp is a socket; if it isRPC_ANYSOCK, then this routine opens a new one and setssockp.  Since TCP-based RPC uses buffered I/O, the user may              specify the size of the send and receive buffers with the              parameterssendsz andrecvsz; values of zero choose              suitable defaults.  This routine returns NULL if it fails.CLIENT *clntudp_create(struct sockaddr_in *addr,unsigned longprognum, unsigned longversnum,struct timevalwait, int *sockp);              This routine creates an RPC client for the remote programprognum, versionversnum; the client uses use UDP/IP as a              transport.  The remote program is located at Internet              addressaddr.  Ifaddr->sin_port is zero, then it is set to              actual port that the remote program is listening on (the              remoteportmapservice is consulted for this information).              The parametersockp is a socket; if it isRPC_ANYSOCK, then              this routine opens a new one and setssockp.  The UDP              transport resends the call message in intervals ofwait              time until a response is received or until the call times              out.  The total time for the call to time out is specified              byclnt_call().              Warning: since UDP-based RPC messages can hold only up to 8              Kbytes of encoded data, this transport cannot be used for              procedures that take large arguments or return huge              results.CLIENT *clntudp_bufcreate(struct sockaddr_in *addr,unsigned longprognum, unsigned longversnum,struct timevalwait, int *sockp,unsigned intsendsize, unsigned intrecosize);              This routine creates an RPC client for the remote programprognum, onversnum; the client uses use UDP/IP as a              transport.  The remote program is located at Internet              addressaddr.  Ifaddr->sin_port is zero, then it is set to              actual port that the remote program is listening on (the              remoteportmapservice is consulted for this information).              The parametersockp is a socket; if it isRPC_ANYSOCK, then              this routine opens a new one and setssockp.  The UDP              transport resends the call message in intervals ofwait              time until a response is received or until the call times              out.  The total time for the call to time out is specified              byclnt_call().              This allows the user to specify the maximum packet size for              sending and receiving UDP-based RPC messages.void get_myaddress(struct sockaddr_in *addr);              Stuff the machine's IP address into*addr, without              consulting the library routines that deal with/etc/hosts.              The port number is always set tohtons(PMAPPORT).struct pmaplist *pmap_getmaps(struct sockaddr_in *addr);              A user interface to theportmapservice, which returns a              list of the current RPC program-to-port mappings on the              host located at IP address*addr.  This routine can return              NULL.  The commandrpcinfo -p uses this routine.unsigned short pmap_getport(struct sockaddr_in *addr,unsigned longprognum, unsigned longversnum,unsigned intprotocol);              A user interface to theportmapservice, which returns the              port number on which waits a service that supports program              numberprognum, versionversnum, and speaks the transport              protocol associated withprotocol.  The value ofprotocol              is most likelyIPPROTO_UDPorIPPROTO_TCP.  A return value              of zero means that the mapping does not exist or that the              RPC system failed to contact the remoteportmapservice.              In the latter case, the global variablerpc_createerr              contains the RPC status.enum clnt_stat pmap_rmtcall(struct sockaddr_in *addr,unsigned longprognum, unsigned longversnum,unsigned longprocnum,xdrproc_tinproc, char *in,xdrproc_toutproc, char *out,struct timevaltout, unsigned long *portp);              A user interface to theportmapservice, which instructsportmapon the host at IP address*addr to make an RPC call              on your behalf to a procedure on that host.  The parameter*portp will be modified to the program's port number if the              procedure succeeds.  The definitions of other parameters              are discussed incallrpc() andclnt_call().  This procedure              should be used for a “ping” and nothing else.  See alsoclnt_broadcast().bool_t pmap_set(unsigned longprognum, unsigned longversnum,intprotocol, unsigned shortport);              A user interface to theportmapservice, which establishes              a mapping between the triple [prognum,versnum,protocol] andport on the machine'sportmapservice.  The value ofprotocol is most likelyIPPROTO_UDPorIPPROTO_TCP.  This              routine returns one if it succeeds, zero otherwise.              Automatically done bysvc_register().bool_t pmap_unset(unsigned longprognum, unsigned longversnum);              A user interface to theportmapservice, which destroys all              mapping between the triple [prognum,versnum,*] andportson              the machine'sportmapservice.  This routine returns one if              it succeeds, zero otherwise.int registerrpc(unsigned longprognum, unsigned longversnum,unsigned longprocnum, typeof(char *(char *)) *procname,xdrproc_tinproc, xdrproc_toutproc);              Register procedureprocname with the RPC service package.              If a request arrives for programprognum, versionversnum,              and procedureprocnum,procname is called with a pointer to              its parameter(s);procname should return a pointer to its              static result(s);inproc is used to decode the parameters              whileoutproc is used to encode the results.  This routine              returns zero if the registration succeeded, -1 otherwise.              Warning: remote procedures registered in this form are              accessed using the UDP/IP transport; seesvcudp_create()              for restrictions.struct rpc_createerrrpc_createerr;              A global variable whose value is set by any RPC client              creation routine that does not succeed.  Use the routineclnt_pcreateerror() to print the reason why.void svc_destroy(SVCXPRT *xprt);              A macro that destroys the RPC service transport handle,xprt.  Destruction usually involves deallocation of private              data structures, includingxprt itself.  Use ofxprt is              undefined after calling this routine.fd_setsvc_fdset;              A global variable reflecting the RPC service side's read              file descriptor bit mask; it is suitable as a parameter to              theselect(2) system call.  This is of interest only if a              service implementor does their own asynchronous event              processing, instead of callingsvc_run().  This variable is              read-only (do not pass its address toselect(2)!), yet it              may change after calls tosvc_getreqset() or any creation              routines.intsvc_fds;              Similar tosvc_fdset, but limited to 32 file descriptors.              This interface is obsoleted bysvc_fdset.svc_freeargs(SVCXPRT *xprt, xdrproc_tinproc, char *in);              A macro that frees any data allocated by the RPC/XDR system              when it decoded the arguments to a service procedure usingsvc_getargs().  This routine returns 1 if the results were              successfully freed, and zero otherwise.svc_getargs(SVCXPRT *xprt, xdrproc_tinproc, char *in);              A macro that decodes the arguments of an RPC request              associated with the RPC service transport handle,xprt.              The parameterin is the address where the arguments will be              placed;inproc is the XDR routine used to decode the              arguments.  This routine returns one if decoding succeeds,              and zero otherwise.struct sockaddr_in *svc_getcaller(SVCXPRT *xprt);              The approved way of getting the network address of the              caller of a procedure associated with the RPC service              transport handle,xprt.void svc_getreqset(fd_set *rdfds);              This routine is of interest only if a service implementor              does not callsvc_run(), but instead implements custom              asynchronous event processing.  It is called when theselect(2) system call has determined that an RPC request              has arrived on some RPC socket(s);rdfds is the resultant              read file descriptor bit mask.  The routine returns when              all sockets associated with the value ofrdfds have been              serviced.void svc_getreq(intrdfds);              Similar tosvc_getreqset(), but limited to 32 file              descriptors.  This interface is obsoleted bysvc_getreqset().bool_t svc_register(SVCXPRT *xprt, unsigned longprognum,unsigned longversnum,typeof(void (struct svc_req *, SVCXPRT *)) *dispatch,unsigned longprotocol);              Associatesprognum andversnum with the service dispatch              procedure,dispatch.  Ifprotocol is zero, the service is              not registered with theportmapservice.  Ifprotocol is              nonzero, then a mapping of the triple              [prognum,versnum,protocol] toxprt->xp_port is established              with the localportmapservice (generallyprotocol is zero,IPPROTO_UDPorIPPROTO_TCP).  The proceduredispatch has              the following form:                  dispatch(struct svc_req *request, SVCXPRT *xprt);              Thesvc_register() routine returns one if it succeeds, and              zero otherwise.void svc_run(void);              This routine never returns.  It waits for RPC requests to              arrive, and calls the appropriate service procedure usingsvc_getreq() when one arrives.  This procedure is usually              waiting for aselect(2) system call to return.bool_t svc_sendreply(SVCXPRT *xprt, xdrproc_toutproc, char *out);              Called by an RPC service's dispatch routine to send the              results of a remote procedure call.  The parameterxprt is              the request's associated transport handle;outproc is the              XDR routine which is used to encode the results; andout is              the address of the results.  This routine returns one if it              succeeds, zero otherwise.void svc_unregister(unsigned longprognum, unsigned longversnum);              Remove all mapping of the double [prognum,versnum] to              dispatch routines, and of the triple [prognum,versnum,*] to              port number.void svcerr_auth(SVCXPRT *xprt, enum auth_statwhy);              Called by a service dispatch routine that refuses to              perform a remote procedure call due to an authentication              error.void svcerr_decode(SVCXPRT *xprt);              Called by a service dispatch routine that cannot              successfully decode its parameters.  See alsosvc_getargs().void svcerr_noproc(SVCXPRT *xprt);              Called by a service dispatch routine that does not              implement the procedure number that the caller requests.void svcerr_noprog(SVCXPRT *xprt);              Called when the desired program is not registered with the              RPC package.  Service implementors usually do not need this              routine.void svcerr_progvers(SVCXPRT *xprt, unsigned longlow_vers,unsigned longhigh_vers);              Called when the desired version of a program is not              registered with the RPC package.  Service implementors              usually do not need this routine.void svcerr_systemerr(SVCXPRT *xprt);              Called by a service dispatch routine when it detects a              system error not covered by any particular protocol.  For              example, if a service can no longer allocate storage, it              may call this routine.void svcerr_weakauth(SVCXPRT *xprt);              Called by a service dispatch routine that refuses to              perform a remote procedure call due to insufficient              authentication parameters.  The routine callssvcerr_auth(xprt, AUTH_TOOWEAK).SVCXPRT *svcfd_create(intfd, unsigned intsendsize,unsigned intrecvsize);              Create a service on top of any open file descriptor.              Typically, this file descriptor is a connected socket for a              stream protocol such as TCP.sendsize andrecvsize              indicate sizes for the send and receive buffers.  If they              are zero, a reasonable default is chosen.SVCXPRT *svcraw_create(void);              This routine creates a toy RPC service transport, to which              it returns a pointer.  The transport is really a buffer              within the process's address space, so the corresponding              RPC client should live in the same address space; seeclntraw_create().  This routine allows simulation of RPC              and acquisition of RPC overheads (such as round trip              times), without any kernel interference.  This routine              returns NULL if it fails.SVCXPRT *svctcp_create(intsock, unsigned intsend_buf_size,unsigned intrecv_buf_size);              This routine creates a TCP/IP-based RPC service transport,              to which it returns a pointer.  The transport is associated              with the socketsock, which may beRPC_ANYSOCK, in which              case a new socket is created.  If the socket is not bound              to a local TCP port, then this routine binds it to an              arbitrary port.  Upon completion,xprt->xp_sock is the              transport's socket descriptor, andxprt->xp_port is the              transport's port number.  This routine returns NULL if it              fails.  Since TCP-based RPC uses buffered I/O, users may              specify the size of buffers; values of zero choose suitable              defaults.SVCXPRT *svcudp_bufcreate(intsock, unsigned intsendsize,unsigned intrecosize);              This routine creates a UDP/IP-based RPC service transport,              to which it returns a pointer.  The transport is associated              with the socketsock, which may beRPC_ANYSOCK, in which              case a new socket is created.  If the socket is not bound              to a local UDP port, then this routine binds it to an              arbitrary port.  Upon completion,xprt->xp_sock is the              transport's socket descriptor, andxprt->xp_port is the              transport's port number.  This routine returns NULL if it              fails.              This allows the user to specify the maximum packet size for              sending and receiving UDP-based RPC messages.SVCXPRT *svcudp_create(intsock);              This call is equivalent tosvcudp_bufcreate(sock,SZ,SZ) for              some default sizeSZ.bool_t xdr_accepted_reply(XDR *xdrs, struct accepted_reply *ar);              Used for encoding RPC reply messages.  This routine is              useful for users who wish to generate RPC-style messages              without using the RPC package.bool_t xdr_authunix_parms(XDR *xdrs, struct authunix_parms *aupp);              Used for describing UNIX credentials.  This routine is              useful for users who wish to generate these credentials              without using the RPC authentication package.void xdr_callhdr(XDR *xdrs, struct rpc_msg *chdr);              Used for describing RPC call header messages.  This routine              is useful for users who wish to generate RPC-style messages              without using the RPC package.bool_t xdr_callmsg(XDR *xdrs, struct rpc_msg *cmsg);              Used for describing RPC call messages.  This routine is              useful for users who wish to generate RPC-style messages              without using the RPC package.bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *ap);              Used for describing RPC authentication information              messages.  This routine is useful for users who wish to              generate RPC-style messages without using the RPC package.bool_t xdr_pmap(XDR *xdrs, struct pmap *regs);              Used for describing parameters to variousportmap              procedures, externally.  This routine is useful for users              who wish to generate these parameters without using thepmapinterface.bool_t xdr_pmaplist(XDR *xdrs, struct pmaplist **rp);              Used for describing a list of port mappings, externally.              This routine is useful for users who wish to generate these              parameters without using thepmapinterface.bool_t xdr_rejected_reply(XDR *xdrs, struct rejected_reply *rr);              Used for describing RPC reply messages.  This routine is              useful for users who wish to generate RPC-style messages              without using the RPC package.bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *rmsg);              Used for describing RPC reply messages.  This routine is              useful for users who wish to generate RPC style messages              without using the RPC package.void xprt_register(SVCXPRT *xprt);              After RPC service transport handles are created, they              should register themselves with the RPC service package.              This routine modifies the global variablesvc_fds.  Service              implementors usually do not need this routine.void xprt_unregister(SVCXPRT *xprt);              Before an RPC service transport handle is destroyed, it              should unregister itself with the RPC service package.              This routine modifies the global variablesvc_fds.  Service              implementors usually do not need this routine.

ATTRIBUTES        top

       For an explanation of the terms used in this section, seeattributes(7).       ┌──────────────────────────────────────┬───────────────┬─────────┐       │InterfaceAttributeValue│       ├──────────────────────────────────────┼───────────────┼─────────┤       │auth_destroy(),authnone_create(),   │ Thread safety │ MT-Safe │       │authunix_create(),                   │               │         │       │authunix_create_default(),           │               │         │       │callrpc(),clnt_broadcast(),         │               │         │       │clnt_call(),clnt_destroy(),         │               │         │       │clnt_create(),clnt_control(),       │               │         │       │clnt_freeres(),clnt_geterr(),       │               │         │       │clnt_pcreateerror(),clnt_perrno(),  │               │         │       │clnt_perror(),clnt_spcreateerror(), │               │         │       │clnt_sperrno(),clnt_sperror(),      │               │         │       │clntraw_create(),clnttcp_create(),  │               │         │       │clntudp_create(),                    │               │         │       │clntudp_bufcreate(),                 │               │         │       │get_myaddress(),pmap_getmaps(),     │               │         │       │pmap_getport(),pmap_rmtcall(),      │               │         │       │pmap_set(),pmap_unset(),            │               │         │       │registerrpc(),svc_destroy(),        │               │         │       │svc_freeargs(),svc_getargs(),       │               │         │       │svc_getcaller(),svc_getreqset(),    │               │         │       │svc_getreq(),svc_register(),        │               │         │       │svc_run(),svc_sendreply(),          │               │         │       │svc_unregister(),svcerr_auth(),     │               │         │       │svcerr_decode(),svcerr_noproc(),    │               │         │       │svcerr_noprog(),svcerr_progvers(),  │               │         │       │svcerr_systemerr(),                  │               │         │       │svcerr_weakauth(),svcfd_create(),   │               │         │       │svcraw_create(),svctcp_create(),    │               │         │       │svcudp_bufcreate(),svcudp_create(), │               │         │       │xdr_accepted_reply(),                │               │         │       │xdr_authunix_parms(),xdr_callhdr(), │               │         │       │xdr_callmsg(),xdr_opaque_auth(),    │               │         │       │xdr_pmap(),xdr_pmaplist(),          │               │         │       │xdr_rejected_reply(),                │               │         │       │xdr_replymsg(),xprt_register(),     │               │         │       │xprt_unregister()                    │               │         │       └──────────────────────────────────────┴───────────────┴─────────┘

SEE ALSO        top

xdr(3)       The following manuals:              Remote Procedure Calls: Protocol Specification              Remote Procedure Call Programming Guide              rpcgen Programming GuideRPC: Remote Procedure Call Protocol Specification, RFC 1050, Sun       Microsystems, Inc., USC-ISI.

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17rpc(3)

Pages that refer to this page:autofsd-probe(1)xdr(3)rpc.rquotad(8)


Copyright and license for this manual page


HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp