Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"
No Starch Press

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 54 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here




       rrppccggeenn infile
       rrppccggeenn [[--DDname[[==value]]]] [[--TT]] [[--KK secs]] infile
       rrppccggeenn --cc||--hh||--ll||--mm||--tt [[--oo outfile ]] infile
       rrppccggeenn [[--II]] --ss nettype [[--oo outfile]] infile
       rrppccggeenn --nn netid [[--oo outfile]] infile


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

       rrppccggeenn  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 pprroottoo..xx, then rrppccggeenn will generate
       a header file in pprroottoo..hh,  XDR  routines  in  pprroottoo_xxddrr..cc,
       server-side stubs in pprroottoo_ssvvcc..cc, and client-side stubs in
       pprroottoo_ccllnntt..cc.  With the --TT option, it will  also  generate
       the  RPC  dispatch  table  in  pprroottoo_ttbbll..ii.   With the --SScc
       option, it will also generate   sample  code  which  would
       illustrate  how to use the remote procedures on the client
       side. This code would be created in pprroottoo_cclliieenntt..cc.   With
       the --SSss option, it will also generate a sample server code
       which would illustrate how to write the remote procedures.
       This code would be created in pprroottoo_sseerrvveerr..cc.

       The  server  created can be started both by the port moni­
       tors (for example, iinneettdd or lliisstteenn) or by itself.  When it
       is  started by a port monitor, it creates servers only for
       the transport for which the file descriptor 00 was  passed.
       The  name of the transport must be specified by setting up
       the environmental variable PPMM_TTRRAANNSSPPOORRTT.  When the  server
       generated by rrppccggeenn is executed, it creates server handles
       for all the transports specified  in  NNEETTPPAATTHH  environment
       variable, or if it is unset, it creates server handles for
       all  the  visible  transports  from  //eettcc//nneettccoonnffiigg  file.
       Note:  the  transports  are  chosen at run time and not at
       compile time.  When the server is self-started,  it  back­
       grounds  itself  by  default.   A  special  define  symbol
       RRPPCC_SSVVCC_FFGG can be used to run the server process in  fore­

       The  second synopsis provides special features which allow
       for the creation of more sophisticated RPC servers.  These
       features  include  support  for user provided ##ddeeffiinneess and
       RPC dispatch tables.  The  entries  in  the  RPC  dispatch
       table contain:
              ·  pointers to the service routine corresponding to
                 that procedure,
              ·  a pointer to the input and output arguments
              ·  the size of these routines
       A server can use the dispatch table to check authorization
       The C preprocessor, cccc --EE [see cc(1)], is run on the input
       file before it is actually  interpreted  by  rrppccggeenn.   For
       each type of output file, rrppccggeenn defines a special prepro­
       cessor symbol for use by the rrppccggeenn programmer:

       RRPPCC_HHDDRR     defined when compiling into header files
       RRPPCC_XXDDRR     defined when compiling into XDR routines
       RRPPCC_SSVVCC     defined when compiling into server-side stubs
       RRPPCC_CCLLNNTT    defined when compiling into client-side stubs
       RRPPCC_TTBBLL     defined  when  compiling  into  RPC   dispatch

       Any  line  beginning  with `%%' is passed directly into the
       output file, uninterpreted by rrppccggeenn.

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

       The following options are available:

       --aa     Generate  all  the  files including sample code for
              client and server side.

       --bb     This generates code for the SunOS4.1 style of  rpc.
              It  is  for  backward  compatibilty.   This  is the

       --55     This generates code for the SysVr4 style of rpc. It
              is used by the Transport Independent RPC that is in
              Svr4 systems.  By default rpcgen generates code for
              SunOS4.1 stype of rpc.

       --cc     Compile into XDR routines.

       --CC     Generate code in ANSI C. This option also generates
              code that could be compiled with the C++  compiler.
              This is the default.

       --kk     Generate code in K&R C.  The default is ANSI C.

              Define  a  symbol  name.  Equivalent to the ##ddeeffiinnee
              directive in the source.  If  no  value  is  given,
              value  is  defined as 11.  This option may be speci­
              fied more than once.

       --hh     Compile into CC data-definitions  (a  header  file).
              --TT  option  can be used in conjunction to produce a
              is --KK --11.

              When  monitoring  for  a server, some portmonitors,
              like listen(1M), always  spawn  a  new  process  in
              response to a service request.  If it is known that
              a server will be used  with  such  a  monitor,  the
              server  should exit immediately on completion.  For
              such servers, rrppccggeenn should be used with --KK --11.

       --ll     Compile into client-side stubs.

       --mm     Compile 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.

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

       --NN     Use  the newstyle of rpcgen. This allows procedures
              to have multiple arguments.  It also uses the style
              of  parameter passing that closely resembles C. So,
              when passing an argument to a remote procedure  you
              do  not  have to pass a pointer to the argument but
              the argument itself. This  behaviour  is  different
              from  the  oldstyle  of  rpcgen generated code. The
              newstyle is not the default case because  of  back­
              ward compatibility.

       --oo outfile
              Specify  the  name  of the output file.  If none is
              specified, standard output is used (--cc, --hh, --ll, --mm,
              --nn, --ss, --ss --ssaanndd --tt modes only).

       --ss nettype
              Compile  into  server-side stubs for all the trans­
              ports belonging to the  class  nettype.   The  sup­
              ported  classes  are  nneettppaatthh,  vviissiibbllee, cciirrccuuiitt_nn,
              cciirrccuuiitt_vv, ddaattaaggrraamm_nn,  ddaattaaggrraamm_vv,  ttccpp,  and  uuddpp
              [see rpc(3N) for the meanings associated with these
              classes].  This option may be specified  more  than
              once.   Note: the transports are chosen at run time
              and not at compile time.

       --SScc    Generate sample code to show the use of remote pro­
              cedure and how to bind to the server before calling
              the client side stubs generated by rpcgen.

       The  RPC  Language does not support nesting of structures.
       As a work-around, structures can be declared at  the  top-
       level,  and  their  name  used  inside other structures in
       order to achieve the same effect.

       Name clashes can occur  when  using  program  definitions,
       since the apparent scoping does not really apply.  Most of
       these can be avoided by giving unique names for  programs,
       versions, procedures and types.

       The  server  code  generated  with --nn option refers to the
       transport indicated by netid and hence is very  site  spe­


       The following example:

              $$ rrppccggeenn --TT pprroott..xx

       generates the five files: pprroott..hh, pprroott_ccllnntt..cc, pprroott_ssvvcc..cc,
       pprroott_xxddrr..cc and pprroott_ttbbll..ii.

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

              $$ rrppccggeenn --hh pprroott..xx

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

              $$ rrppccggeenn --ss ddaattaaggrraamm_nn --DDTTEESSTT pprroott..xx

       To  create  the  server side stubs for the transport indi­
       cated by netid ttccpp, use:

              $$ rrppccggeenn --nn ttccpp --oo pprroott_ssvvcc..cc pprroott..xx



Help us cut cost by not downloading the whole site!
Use of automated download sofware ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and therefore is expressedly prohibited. For more details on this, take a look here



Security Code
Security Code
Type Security Code

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!

Amazon Wish List

Did You Know?
You can get all the latest Site and Linux news by checking out our news page.


Tell a Friend About Us

Bookmark and Share

Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.09 Seconds