GETOPT.3
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:4k
源码类别:

操作系统开发

开发平台:

C/C++

  1. GETOPT(3)                 Minix Programmer's Manual                  GETOPT(3)
  2. NAME
  3.      getopt - get option letter from argv
  4. SYNOPSIS
  5.      int getopt(argc, argv, optstring)
  6.      int argc;
  7.      char **argv;
  8.      char *optstring;
  9.      extern char *optarg;
  10.      extern int optind;
  11. DESCRIPTION
  12.      Getopt returns the next option letter in argv that matches  a  letter  in
  13.      optstring.   Optstring  is  a  string  of recognized option letters; if a
  14.      letter is followed by a colon, the option is expected to have an argument
  15.      that  may  or may not be separated from it by white space.  Optarg is set
  16.      to point to the start of the option argument on return from getopt.
  17.      Getopt places in optind the  argv  index  of  the  next  argument  to  be
  18.      processed.   Because  optind  is  external, it is normally initialized to
  19.      zero automatically before the first call to getopt.
  20.      When all options have been processed (i.e., up to  the  first  non-option
  21.      argument),  getopt  returns  EOF.   The  special option -- may be used to
  22.      delimit the end of the options; EOF will be  returned,  and  --  will  be
  23.      skipped.
  24. DIAGNOSTICS
  25.      Getopt prints an error message on stderr and returns a question mark  (?)
  26.      when it encounters an option letter not included in optstring.
  27. EXAMPLE
  28.      The following code fragment shows how one might process the arguments for
  29.      a  command  that can take the mutually exclusive options a and b, and the
  30.      options f and o, both of which require arguments:
  31.           main(argc, argv)
  32.           int argc;
  33.           char **argv;
  34.           {
  35.                   int c;
  36.                   extern int optind;
  37.                   extern char *optarg;
  38.                   .
  39.                   .
  40.                   .
  41.                   while ((c = getopt(argc, argv, "abf:o:")) != EOF)
  42.                           switch (c) {
  43.                           case `a':
  44. 6BSD                              May 27, 1986                               1
  45. GETOPT(3)                 Minix Programmer's Manual                  GETOPT(3)
  46.                                   if (bflg)
  47.                                           errflg++;
  48.                                   else
  49.                                           aflg++;
  50.                                   break;
  51.                           case `b':
  52.                                   if (aflg)
  53.                                           errflg++;
  54.                                   else
  55.                                           bproc();
  56.                                   break;
  57.                           case `f':
  58.                                   ifile = optarg;
  59.                                   break;
  60.                           case `o':
  61.                                   ofile = optarg;
  62.                                   break;
  63.                           case `?':
  64.                           default:
  65.                                   errflg++;
  66.                                   break;
  67.                           }
  68.                   if (errflg) {
  69.                           fprintf(stderr, "Usage: ...");
  70.                           exit(2);
  71.                   }
  72.                   for (; optind < argc; optind++) {
  73.                           .
  74.                           .
  75.                           .
  76.                   }
  77.                   .
  78.                   .
  79.                   .
  80.           }
  81. HISTORY
  82.      Written by Henry Spencer, working from a Bell Labs manual page.  Modified
  83.      by Keith Bostic to behave more like the System V version.
  84. BUGS
  85.      It is not obvious how `-' standing alone should be treated;  this version
  86.      treats it as a non-option argument, which is not always right.
  87.      Option arguments are allowed to begin with `-'; this  is  reasonable  but
  88.      reduces the amount of error checking possible.
  89.      Getopt is quite flexible but the obvious price must be  paid:   there  is
  90.      much  it  could  do  that  it  doesn't,  like checking mutually exclusive
  91.      options, checking type of option arguments, etc.
  92. 6BSD                              May 27, 1986                               2