Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Результат, возвращаемый функцией
getoptargvgetopt□ Если опция принимает значение, на него указывает внешняя переменная
optarg□ Функция
getopt--getopt□ Функция
getopt?optopt□ Если опции требуется значение (например, в нашем примере опции
-fgetopt?getopt:?Во внешней переменной
optindgetoptoptindНекоторые версии функции
getoptoptindgetoptargvargv[optind]getoptPOSIXLY_CORRECTgetoptgetoptopterrgetoptstderrИтак, выполните упражнение 4.2.
getoptВ этом упражнении вы используете функцию getopt; назовите новую программу argopt.c.
#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(int argc, char *argv[]) { int opt; while ((opt = getopt(argc, argv, ":if:lr")) != -1) { switch(opt) { case 'i': case 'l': case 'r': printf("option: %cn", opt); break; case 'f': printf("filename: %sn", optarg); break; case ':': printf("option needs a valuen"); break; case '?': printf("unknown option: %cn", optopt); break; } } for (; optind < argc; optind++) printf("argument: %sn", argv[optind]); exit(0);}Теперь, когда вы выполните программу, то увидите, что все аргументы командной строки обрабатываются автоматически:
$ <b>./argopt -i -lr 'hi there' -f fred.с -q</b>option: ioption: loption: rfilename: fred.cunknown option: qargument: hi thereКак это работает
Программа многократно вызывает функцию
getoptgetoptgetoptКогда все опции обработаны, программа просто выводит оставшиеся аргументы, как и раньше, но начиная с номера, хранящегося в переменной
optindgetopt_long
Многие приложения Linux принимают более информативные аргументы, чем использованные в предыдущем примере односимвольные опции. Библиотека С проекта GNU содержит версию функции
getoptgetopt_longРассмотрим упражнение 4.3.
getopt_longПримените функцию
getopt_long$ <b>./longopt --initialize --list 'hi there' --file fred.c -q</b>option: ioption: lfilename: fred.c./longopt: invalid option --q
