Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

 

The GNU C Programming Tutorial - Processing command-line options

Node:Processing command-line options, Next:, Previous:argc and argv, Up:Putting a program together



Processing command-line options

It is easy, though tedious to pull options directly out of the argv vector with your own routines. It is slightly less tedious to use the standard C option-processing function getopt, or the enhanced GNU version of the same function, getopt_long, which permits GNU-style long options (for example, --quiet as opposed to -q).

The best option of all is to use the argp interface for processing options. Professionally written programs provide the user with standard and useful options. The argp function provides for these. For the modest price of setting up your command line arguments in a structured way, and with surprisingly few lines of code, you can obtain all the perks of a "real" GNU program, such as "automagically"-generated output to the --help, --usage, and --version options, as defined by the GNU coding standards. Using argp results in a more consistent look-and-feel for programs that use it, and makes it less likely that the built-in documentation for a program will be wrong or out of date.

POSIX, the Portable Operating System Interface standard, recommends the following conventions for command-line arguments. The argp interface makes implementing them easy.

  • Command-line arguments are options if they begin with a hyphen (-).
  • Multiple options may follow a hyphen in a cluster if they do not take arguments. Thus, -abc and -a -b -c are the same.
  • Option names are single alphanumeric characters.
  • Options may require an argument. For example, the -o option of the ld command requires an output file name.
  • The whitespace separating an option and its argument is optional. Thus, -o foo and -ofoo are the same.
  • Options usually precede non-option arguments. (In fact, argp is more flexible than this; if you want to suppress this flexibility, define the _POSIX_OPTION_ORDER environment variable.)
  • The argument -- terminates all options; all following command-line arguments are considered non-option arguments, even if they begin with a hyphen.
  • A single hyphen as an argument is considered a non-option argument; by convention, it is used to specify input from standard input or output to standard output.
  • Options may appear in any order, even multiple times. The meaning of this is left to the application.

In addition, GNU adds long options, like the --help, --usage, and --version options mentioned above. A long option starts with --, which is then followed by a string of alphanumeric characters and hyphens. Option names are usually one to three words long, with hyphens to separate words. Users can abbreviate the option names as long as the abbreviations are unique. A long option (such as --verbose) often has a short-option synonym (such as -v).

Long options can accept optional (that is, non-necessary) arguments. You can specify an argument for a long option as follows:

--option-name=value

You may not type whitespace between the option name and the equals sign, or between the equals sign and the option value.

 
 
  Published under free license. Design by Interspire