|
NAMEgetopt —
get option character from command line argument list
LIBRARYStandard C Library (libc, -lc)SYNOPSIS#include <unistd.h>
extern char *optarg;
int
DESCRIPTIONThegetopt () function incrementally parses a command
line argument list argv and returns the next
known option character. An option character is
known if it has been specified in the string of accepted
option characters, optstring.
The option string optstring may contain the
following elements: individual characters, and characters followed by a
colon to indicate an option argument is to follow. If an individual
character is followed by two colons, then the option argument is optional;
optarg is set to the rest of the current
argv word, or On return from The variables opterr and
optind are both initialized to 1. The
optind variable may be set to another value before a
set of calls to In order to use The RETURN VALUESThegetopt () function returns the next known option
character in optstring. If
getopt () encounters a character not found in
optstring or if it detects a missing option argument, it
returns ‘? ’ (question mark). If
optstring has a leading
‘: ’ then a missing option argument
causes ‘: ’ to be returned instead of
‘? ’. In either case, the variable
optopt is set to the character that caused the error.
The getopt () function returns -1 when the argument
list is exhausted.
EXAMPLES#include <unistd.h> int bflag, ch, fd; bflag = 0; while ((ch = getopt(argc, argv, "bf:")) != -1) { switch (ch) { case 'b': bflag = 1; break; case 'f': if ((fd = open(optarg, O_RDONLY, 0)) < 0) { (void)fprintf(stderr, "myname: %s: %s\n", optarg, strerror(errno)); exit(1); } break; case '?': default: usage(); } } argc -= optind; argv += optind; DIAGNOSTICSIf thegetopt () function encounters a character not
found in the string optstring or detects a missing
option argument it writes an error message to the
stderr and returns
‘? ’. Setting
opterr to a zero will disable these error messages. If
optstring has a leading
‘: ’ then a missing option argument
causes a ‘: ’ to be returned in addition
to suppressing any error messages.
Option arguments are allowed to begin with
“ SEE ALSOgetopt(1), getopt_long(3), getsubopt(3)STANDARDSThe optreset variable was added to make it possible to call thegetopt () function multiple times. This is an
extension to the IEEE Std 1003.2
(“POSIX.2”) specification.
HISTORYThegetopt () function appeared in
4.3BSD.
BUGSThegetopt () function was once specified to return
EOF instead of -1. This was changed by
IEEE Std 1003.2-1992 (“POSIX.2”) to
decouple getopt () from
<stdio.h> .
A single dash “ It is also possible to handle digits as option letters. This
allows int ch; long length; char *p, *ep; while ((ch = getopt(argc, argv, "0123456789")) != -1) switch (ch) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': p = argv[optind - 1]; if (p[0] == '-' && p[1] == ch && !p[2]) { length = ch - '0'; ep = ""; } else if (argv[optind] && argv[optind][1] == ch) { length = strtol((p = argv[optind] + 1), &ep, 10); optind++; optreset = 1; } else usage(); if (*ep != '\0') errx(EX_USAGE, "illegal number -- %s", p); break; }
Visit the GSP FreeBSD Man Page Interface. |