rpcgen(1) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

rpcgen(1)

rpcgen(1)                        User Commands                       rpcgen(1)



NAME
       rpcgen - an RPC protocol compiler

SYNOPSIS
       rpcgen infile


       rpcgen [-a] [-A] [-b] [-C] [-D name [= value]] [-i size]
            [-I [-K seconds]] [-L] [-M] [-N] [- T] [-v]
            [-Y pathname] infile


       rpcgen [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm]
            [-o outfile] infile


       rpcgen [-s nettype] [-o outfile] infile


       rpcgen [-n netid] [-o outfile] infile

DESCRIPTION
       The  rpcgen utility 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).


       The  rpcgen  utility is normally used as in the first synopsis where it
       takes an input file and generates three output files. If the infile  is
       named  proto.x, then rpcgen generates a header in proto.h, XDR routines
       in proto_xdr.c, server-side stubs in proto_svc.c, and client-side stubs
       in proto_clnt.c. With the -T option, it also generates the RPC dispatch
       table in proto_tbl.i.


       rpcgen can also generate sample client and server  files  that  can  be
       customized  to  suit  a  particular  application. The -Sc, -Ss, and -Sm
       options generate sample client, server and makefile, respectively.  The
       -a option generates all files, including sample files. If the infile is
       proto.x, then the client-side sample file is written to proto_client.c,
       the  server-side  sample file to proto_server.c and the sample makefile
       to makefile.proto.


       The server created can be started both by the port monitors (for  exam‐
       ple, inetd) or by itself. When it is started by a port monitor, it cre‐
       ates servers only for the transport for which the file descriptor 0 was
       passed.  The  name of the transport must be specified by setting up the
       environment variable PM_TRANSPORT. When the server generated by  rpcgen
       is executed, it creates server handles for all the transports specified
       in the NETPATH environment variable, or if  it  is  unset,  it  creates
       server  handles  for all the visible transports from the /etc/netconfig
       file. Note: the transports are chosen at run time and  not  at  compile
       time.  When  the  server  is  self-started,  it  backgrounds  itself by
       default. A special define symbol RPC_SVC_FG can  be  used  to  run  the
       server process in foreground.


       The  second synopsis provides special features which allow for the cre‐
       ation of more sophisticated RPC servers. These features include support
       for  user-provided #defines and RPC dispatch tables. The entries in the
       RPC dispatch table contain:

           o      pointers to the service routine corresponding to that proce‐
                  dure


           o      a pointer to the input and output arguments


           o      the size of these routines



       A  server can use the dispatch table to check authorization and then to
       execute the service routine. A client library can use the dispatch  ta‐
       ble to deal with the details of storage management and XDR data conver‐
       sion.


       The other three synopses shown above are used when one does not want to
       generate all the output files, but only a particular one. See the EXAM‐
       PLES section below for examples of rpcgen usage. When  rpcgen  is  exe‐
       cuted  with the -s option, it creates servers for that particular class
       of transports. When executed with the -n option, it  creates  a  server
       for  the transport specified by netid. If infile is not specified, rpc‐
       gen accepts the standard input.


       All the options mentioned in the second synopsis can be used  with  the
       other  three  synopses,  but the changes are made only to the specified
       output file.


       The C preprocessor cc  -E is run on the input file before it  is  actu‐
       ally  interpreted  by  rpcgen.  For  each  type  of output file, rpcgen
       defines a special preprocessor symbol for use by the rpcgen programmer:

       RPC_HDR     defined when compiling into headers


       RPC_XDR     defined when compiling into XDR routines


       RPC_SVC     defined when compiling into server-side stubs


       RPC_CLNT    defined when compiling into client-side stubs


       RPC_TBL     defined when compiling into RPC dispatch tables



       Any line beginning with '%' is passed directly into  the  output  file,
       uninterpreted  by  rpcgen, except that the leading '%' is stripped off.
       To specify the path name of the C preprocessor, use the -Y flag.


       For every data type referred to in infile, rpcgen  assumes  that  there
       exists a routine with the string xdr_ prepended to the name of the data
       type. If this routine does not exist in the RPC/XDR library, it must be
       provided.  Providing an undefined data type allows customization of XDR
       routines.

   Server Error Reporting
       By default, errors detected by  proto_svc.c  is  reported  to  standard
       error and/or the system log.


       This behavior can be overridden by compiling the file with a definition
       of RPC_MSGOUT, for example, -DRPC_MSGOUT=mymsgfunc. The function speci‐
       fied  is  called  to  report  errors.  It must conform to the following
       printf-like signature:

         extern void RPC_MSGOUT(const char *fmt, ...);


OPTIONS
       The following options are supported:

       -a                Generates all files, including sample files.


       -A                Enables the Automatic MT mode in the server main pro‐
                         gram.  In  this  mode,  the RPC library automatically
                         creates threads  to  service  client  requests.  This
                         option generates multithread-safe stubs by implicitly
                         turning on the -M option. Server multithreading modes
                         and  parameters  can be set using the rpc_control(3C)
                         call. rpcgen  generated  code  does  not  change  the
                         default values for the Automatic MT mode.


       -b                Backward compatibility mode. Generates transport-spe‐
                         cific RPC code for older versions  of  the  operating
                         system.


       -c                Compiles into XDR routines.


       -C                Generates  header  and  stub  files which can be used
                         with ANSI C compilers. Headers  generated  with  this
                         flag can also be used with C++ programs.


       -Dname[=value]    Defines  a  symbol  name.  Equivalent  to the #define
                         directive in the source. If no value is given,  value
                         is  defined  as  1. This option can be specified more
                         than once.


       -h                Compiles into C data-definitions (a header).  The  -T
                         option can be used in conjunction to produce a header
                         which supports RPC dispatch tables.


       -i size           Size at which to start generating inline  code.  This
                         option  is  useful for optimization. The default size
                         is 5.


       -I                Compiles support  for  inetd(8)  in  the  server-side
                         stubs.  Such  servers  can  be self-started or can be
                         started by inetd. When the server is self-started, it
                         backgrounds  itself by default. A special define sym‐
                         bol RPC_SVC_FG can be used to run the server  process
                         in foreground, or the user can simply compile without
                         the -I option.

                         If there are no pending client  requests,  the  inetd
                         servers exit after 120 seconds (default). The default
                         can be changed with the -K option. All of  the  error
                         messages  for  inetd  servers  are always logged with
                         syslog(3C).

                         Note -




                           This option is supported for backward compatibility
                           only.  It should always be used in conjunction with
                           the -b option, which generates backward compatibil‐
                           ity code. By default, that is, when -b is not spec‐
                           ified, rpcgen generates servers that can be invoked
                           through portmonitors.




       -K seconds        By default, services created using rpcgen and invoked
                         through port monitors wait 120 seconds after  servic‐
                         ing  a  request  before exiting. That interval can be
                         changed using the -K flag. To create  a  server  that
                         exits  immediately  upon  servicing a request, use -K
                         0. To create a server that never exits, the appropri‐
                         ate argument is -K  −1.

                         When  monitoring  for  a  server,  some portmonitors,
                         always spawn a new process in response to  a  service
                         request.  If  it is known that a server are used with
                         such a monitor, the server should exit immediately on
                         completion.  For  such servers, rpcgen should be used
                         with -K  0.


       -l                Compiles into client-side stubs.


       -L                When the servers are started in foreground, uses sys‐
                         log(3C)  to log the server errors instead of printing
                         them on the standard error.


       -m                Compiles into server-side stubs, but do not  generate
                         a  "main"  routine.  This  option is useful for doing
                         callback-routines and for users  who  need  to  write
                         their own "main" routine to do initialization.


       -M                Generates  multithread-safe  stubs  for passing argu‐
                         ments and results between rpcgen-generated  code  and
                         user  written  code.  This option is useful for users
                         who want to use threads in their code.


       -N                This option allows procedures to have multiple  argu‐
                         ments.  It  also  uses the style of parameter passing
                         that closely resembles C. So, when passing  an  argu‐
                         ment to a remote procedure, you do not have to pass a
                         pointer to the argument, but can  pass  the  argument
                         itself. This behavior is different from the old style
                         of rpcgen-generated code. To maintain  backward  com‐
                         patibility, this option is not the default.


       -n netid          Compiles  into  server-side  stubs  for the transport
                         specified by netid. There  should  be  an  entry  for
                         netid  in  the netconfig database. This option can be
                         specified more than once, so as to compile  a  server
                         that serves multiple transports.


       -o outfile        Specifies  the  name  of  the output file. If none is
                         specified, standard output is used (-c, -h,  -l,  -m,
                         -n, -s, -Sc, -Sm, -Ss, and -t modes only).


       -s nettype        Compiles  into  server-side  stubs for all the trans‐
                         ports belonging to the class nettype.  The  supported
                         classes  are  netpath, visible, circuit_n, circuit_v,
                         datagram_n, datagram_v, tcp, and udp (see rpc(3C) for
                         the  meanings  associated  with  these classes). This
                         option can be specified more  than  once.  Note:  The
                         transports  are chosen at run time and not at compile
                         time.


       -Sc               Generates sample client code that uses remote  proce‐
                         dure calls.


       -Sm               Generates  a  sample  Makefile  which can be used for
                         compiling the application.


       -Ss               Generates sample server code that uses remote  proce‐
                         dure calls.


       -t                Compiles into RPC dispatch table.


       -T                Generates the code to support RPC dispatch tables.

                         The options -c, -h, -l, -m, -s, -Sc, -Sm, -Ss, and -t
                         are used exclusively to generate a particular type of
                         file,  while the options -D and -T are global and can
                         be used with the other options.


       -v                Displays the version number.


       -Y pathname       Gives the name of the directory where  rpcgen  starts
                         looking for the C preprocessor.


OPERANDS
       The following operand is supported:

       infile    input file


EXAMPLES
       Example 1 Generating the Output Files and Dispatch Table



       The following entry


         example% rpcgen -T prot.x




       generates   all   the  five  files:  prot.h,  prot_clnt.c,  prot_svc.c,
       prot_xdr.c, and prot_tbl.i.


       Example 2 Sending Headers to Standard Output



       The following example sends the  C  data-definitions  (header)  to  the
       standard output:


         example% rpcgen -h prot.x



       Example 3 Sending a Test Version



       To  send  the test version of the -DTEST, server-side stubs for all the
       transport belonging to the class datagram_n to standard output, use:


         example% rpcgen -s datagram_n -DTEST prot.x



       Example 4 Creating Server Side Stubs



       To create the server-side stubs for the transport  indicated  by  netid
       tcp, use:


         example% rpcgen -n tcp -o prot_svc.c prot.x



EXIT STATUS
       0     Successful operation.


       >0    An error occurred.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Availabilitydeveloper/base-developer-utilities


SEE ALSO
       rpc(3C), rpc_control(3C), rpc_svc_calls(3C), syslog(3C),  netconfig(5),
       attributes(7), inetd(8)


       The rpcgen chapter in the ONC+ RPC Developer's Guide manual.



Oracle Solaris 11.4               11 May 2021                        rpcgen(1)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3