getopt_long(3) Library Functions Manual getopt_long(3) BEZEICHNUNG getopt_long - Befehlszeilenoptionen auswerten BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #define _GNU_SOURCE #include int getopt_long(int argc, char *argv[], const char *optzeichenkette, const struct option *langopt, int *langindex); BESCHREIBUNG Die Funktion getopt_long() funktioniert wie getopt(3), ausser dass sie auch lange Optionen, die mit zwei Bindestrichen beginnen, akzeptiert. (Falls das Programm nur lange Optionen akzeptiert, dann sollte optzeichenkette als leere Zeichenkette ("") und nicht NULL angegeben werden). Lange Optionen durfen abgekurzt werden, falls die Abkurzung eindeutig ist oder genau mit einer definierten Option ubereinstimmt. Eine lange Option darf einen Parameter der Form --arg=param oder --arg param akzeptieren. langopt ist ein Zeiger auf das erste Element eines Feldes von Strukturen struct option, die in deklariert ist als struct option { const char *name; int has_arg; int *flag; int val; }; Die Bedeutungen der einzelnen Felder sind: name ist der Name der langen Option. has_arg ist: no_argument (oder 0), falls die Option kein Argument erwartet, required_argument (oder 1), falls die Option ein Argument benotigt oder optional_argument (oder 2), falls die Option ein optionales Argument erwartet. flag gibt an, wie fur eine lange Option Ergebnisse zuruckgegeben werden. Falls flag NULL ist, dann gibt getopt_long() val zuruck. (Zum Beispiel kann das aufrufende Programm val auf das Zeichen der aquivalenten Kurzoption setzen.) Anderenfalls gibt getopt_long() 0 zuruck und flag zeigt auf eine Variable, die auf val gesetzt wird, falls die Option gefunden wird, und die unverandert gelassen wird, falls die Option nicht gefunden wird. val ist der Wert, der zuruckzugeben oder in die Variable zu laden ist, auf die flag zeigt. Das letzte Element des Feldes muss mit Nullen gefullt werden. Falls langindex nicht NULL ist, zeigt er auf eine Variable, welche auf den Index der langen Option relativ zu langopt gesetzt wird. Sie ist zu >>argv[(optind - 1)]<< von getopt(3)'s optopt analog. RUCKGABEWERT Siehe getopt(3). getopt_long() liefert auch das Optionszeichen zuruck, wenn eine kurze Option erkannt wird. Fur eine lange Option liefert sie val zuruck, wenn flag NULL ist und ansonsten 0. Fehler und -1 werden wie bei getopt(3) zuruckgegeben, sowie >>?<< fur einen nicht eindeutigen Treffer oder einen irrelevanten Parameter. UMGEBUNGSVARIABLEN Siehe getopt(3). ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------+-------------------------+-----------------------------+ |Schnittstelle | Attribut | Wert | +--------------+-------------------------+-----------------------------+ |getopt_long() | Multithread-Fahigkeit | MT-Unsicher race:getopt env | +--------------+-------------------------+-----------------------------+ STANDARDS GNU. BEISPIELE Das folgende Beispielprogramm veranschaulicht die Benutzung von getopt_long() mit der Mehrzahl ihrer Funktionalitaten. #include #include #include #include int main(int argc, char *argv[]) { int c; int digit_optind = 0; for (;;) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", required_argument, 0, 0 }, {"append", no_argument, 0, 0 }, {"delete", required_argument, 0, 0 }, {"verbose", no_argument, 0, 0 }, {"create", required_argument, 0, 'c'}, {"file", required_argument, 0, 0 }, {0, 0, 0, 0 } }; c = getopt_long(argc, argv, "abc:d:012", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf("Option %s", long_options[option_index].name); if (optarg) printf(" mit Arg %s", optarg); printf("\n"); break; case '0': case '1': case '2': if (digit_optind != 0 && digit_optind != this_option_optind) printf("Ziffern treten in zwei verschiedenen Argv-Elementen auf.\n"); digit_optind = this_option_optind; printf("Option %c\n", c); break; case 'a': printf("Option a\n"); break; case 'b': printf("Option b\n"); break; case 'c': printf("Option c mit Wert '%s'\n", optarg); break; case 'd': printf("Option d mit Wert '%s'\n", optarg); break; case '?': break; default: printf("?? getopt lieferte Zeichen-Code 0%o ??\n", c); } } if (optind < argc) { printf("Nicht-Options-ARGV-Elemente: "); while (optind < argc) printf("%s ", argv[optind++]); printf("\n"); } exit(EXIT_SUCCESS); } SIEHE AUCH getopt(1), getopt(3), getopt_long_only(3), getsubopt(3) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.18 14. Februar 2026 getopt_long(3)