Книга: Linux программирование в примерах
Упражнения
Упражнения
1. Предположим, что программа принимает опции -a
, -b
и -с
, и что -b
требует наличия аргумента. Напишите для этой программы код ручного разбора аргументов без использования getopt()
или getopt_long()
. Для завершения обработки опций принимается --
. Убедитесь, что -ас работает, также, как -bYANKEES
, -b YANKEES
и -abYANKEES
. Протестируйте программу.
2. Реализуйте getopt()
. Для первой версии вы можете не беспокоиться насчет случая 'optstring[0] == ':'
'. Можете также игнорировать opterr
.
3. Добавьте код для 'optstring[0] == ':'
' и opterr
к своей версии getopt()
.
4. Распечатайте и прочтите файлы GNU getopt.h
, getopt.с
и getopt1.с
.
5. Напишите программу, которая объявляет как environ
, так и envp
, и сравните их значения.
6. Разбор аргументов командной строки и опций является тем колесом, которое многие люди не могут не изобретать вновь. Вы можете захотеть познакомиться с различными анализирующими аргументы пакетами, помимо getopt()
и getopt_long()
, такими, как:
• библиотека анализа аргументов Plan 9 From Bell Labs arg(2)[31],
• Argp[32],
• Argv[33],
• Autoopts[34],
• GNU Gengetopt[35],
• Opt[36],
• Popt[37]. См. также справочную страницу popt(3) системы GNU/Linux.
7. Дополнительный балл, почему компилятор С не может полностью игнорировать ключевое слово register? Подсказка: какие действия невозможно совершать с регистровой переменной?