Man Linux: Main Page and Category List


       pmdaGetOpt  -  get  options from argument vector, trapping generic PMDA


       #include <pcp/pmapi.h>
       #include <pcp/impl.h>
       #include <pcp/pmda.h>

       int pmdaGetOpt(int argc, char  *const  *argv,  const  char  *optstring,
       pmdaInterface *dispatch, int *err)

       cc ... -lpcp_pmda -lpcp


       This function is a wrapper for getopt(3).  The behavior of the function
       is identical  except  that  certain  options  are  assumed  to  have  a
       predefined   behavior   which   initializes   several   fields  in  the
       pmdaInterface structure.

       The options that pmdaGetOpt will trap are:

       -Dtrace        Set the PMAPI(3) debug  control  variable  (pmDebug)  to
                      trace.   Used  for  controlling  levels  of trace output
                      while debugging.

       -ddomain       Set the domain number of this agent.

       -hhelpfile     Obtain the help text (see pmdaText(3)) for  the  metrics
                      from  this file rather than from the path specified with
                      pmdaDSO(3) or pmdaDaemon(3).

       -iport         Expect PMCD to connect on inet port (number or name).

       -llogfile      Redirect diagnostics and trace output to logfile.

       -p             Expect PMCD to supply stdin/stdout pipe.

       -usocket       Expect PMCD to connect on unix domain socket.

       Only one of -i, -p and -u may be specified.  If  none  of  these  three
       options  is  given,  a  pipe  (-p)  is assumed.  When these options are
       encountered by pmdaGetOpt, the option is processed and the next  option
       is  examined.   Therefore,  pmdaGetOpt  will only return when an option
       other than those listed above is found, or  the  end  of  the  list  is
       reached.  The returned value will be the argument or EOF, respectively.

       A PMDA can control which of these options the program will accept  with
       the  optstring  argument.   To  accept all the options, the PMDA should
       call pmdaGetOpt with  the  option  string  "D:d:h:i:l:pu:".   Any  PMDA
       specific  options  should  be  added  to  this  string  in the style of
       getopt(3), and returned by pmdaGetOpt  if  encountered.   However,  the
       PMDA cannot reuse any of the options specified above.

       pmdaGetOpt  takes  a  pointer to an int, err, which is used as an error
       count.  This variable should be initialized to zero  before  pmdaGetOpt
       is first called, and tested when pmdaGetOpt returns EOF.

       pmdaGetOpt does not modify argc or argv.


       A  PMDA which takes the additional argument -n and does not use pmDebug
       might call pmdaGetOpt like this:

                pmdaInterface dispatch;
                int           err = 0;
                int           c = 0;

                while ((c = pmdaGetOpt(argv, argc, "d:h:i:l:pu:n:",
                                       dispatch &err)) != EOF) {
                    /* process argument ā€™nā€™, may use optarg etc. */

                if (err)

       The global variables used by getopt (3) may be used by  the  caller  of
       pmdaGetOpt within the argument parsing loop.


       pmdaGetOpt will display the same error messages as getopt.


       The  options  -D,  -d,  -i,  -l,  -p  and -u cannot be reused for other
       purposes by the PMDA.

       The PMDA must be using PMDA_INTERFACE_2 or later, as specified  in  the
       call to pmdaDSO(3) or pmdaDaemon(3).


       pmdbg(1),  getopt(3),  PMAPI(3), PMDA(3), pmdaDaemon(3), pmdaDSO(3) and