Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Результат, возвращаемый функцией
getopt
argv
getopt
□ Если опция принимает значение, на него указывает внешняя переменная
optarg
□ Функция
getopt
--
getopt
□ Функция
getopt
?
optopt
□ Если опции требуется значение (например, в нашем примере опции
-f
getopt
?
getopt
:
?
Во внешней переменной
optind
getopt
optind
Некоторые версии функции
getopt
optind
getopt
argv
argv[optind]
getopt
POSIXLY_CORRECT
getopt
getopt
opterr
getopt
stderr
Итак, выполните упражнение 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: i
option: l
option: r
filename: fred.c
unknown option: q
argument: hi there
Как это работает
Программа многократно вызывает функцию
getopt
getopt
getopt
Когда все опции обработаны, программа просто выводит оставшиеся аргументы, как и раньше, но начиная с номера, хранящегося в переменной
optind
getopt_long
Многие приложения Linux принимают более информативные аргументы, чем использованные в предыдущем примере односимвольные опции. Библиотека С проекта GNU содержит версию функции
getopt
getopt_long
Рассмотрим упражнение 4.3.
getopt_long
Примените функцию
getopt_long
$ <b>./longopt --initialize --list 'hi there' --file fred.c -q</b>
option: i
option: l
filename: fred.c
./longopt: invalid option --q