Разработка приложений в среде Linux - [196]
>17: };
>18:
>19: optCon = poptGetContext("popt-nest", argc, argv, options, 0);
>20:
>21: if ((rc = poptGetNextOpt (optCon)) < -1) {
>22: fprintf(stderr, "%s: %s\n",
>23: poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
>24: poptStrerror(rc));
>25: return 1;
>26: }
>27:
>28: return 0;
>29: }
26.4. Обработка ошибок
Каждая из функций >popt
, которая может возвращать ошибки, возвращает целочисленные значения. В случае возникновения ошибки возвращается отрицательный код. В табл. 26.2 перечислены коды возможных ошибок. После таблицы дается подробное обсуждение каждой ошибки.
Таблица 26.2. Коды ошибок >popt
Код ошибки | Описание |
---|---|
>POPT_ERROR_NOARG | Отсутствует аргумент для данного параметра. |
>POPT_ERROR_BADOPT | Невозможно проанализировать синтаксис аргумента параметра. |
>POPT_ERROR_OPTSTOODEEP | Слишком глубокое вложение замещений имени параметра. |
>POPT_ERROR_BADQUOTE | Несоответствие кавычек. |
>POPT_ERROR_BADNUMBER | Невозможно преобразовать параметр в число. |
>POPT_ERROR_OVERFLOW | Данное число слишком большое или слишком маленькое. |
>POPT_ERROR_NOARG | Параметр, для которого требуется аргумент, был определен в командной строке, однако аргумент не был предоставлен. Эта ошибка может быть возвращена только функцией >poptGetNextOpt() . |
>POPT_ERROR_BADOPT | Параметр был определен в массиве >argv , однако его нет в таблице параметров. Эта ошибка может быть возвращена только функцией >poptGetNextOpt() . |
>POPT_ERROR_OPTSTOODEEP | Совокупность замещений имени параметра имеет большую глубину вложений. На данный момент popt отслеживает параметры только до 10 уровня, чтобы избежать возникновения бесконечной рекурсии. Эту ошибку возвращает только функция >poptGetNextOpt() . |
>POPT_ERROR_BADQUOTE | В строке, прошедшей синтаксический анализ, было обнаружено несоответствие кавычек (например, была обнаружена только одна одинарная кавычка). Эту ошибку могут возвращать функции >poptParseArgvString() , >poptReadConfigFile() и >poptReadDefaultConfig() . |
>POPT_ERROR_BADNUMBER | Преобразование строки в число (>int или >long ) не было выполнено вследствие того, что строка содержит нецифровые символы. Эта ошибка возникает в том случае, когда функция >poptGetNextOpt() обрабатывает аргумент типа >РOРТ_ARG_INT или >POPT_ARG_LONG . |
>POPT_ERROR_OVERFLOW | Преобразование из строки в число не было выполнено вследствие того, что число было слишком большим или слишком маленьким. Подобно ошибке >POPT_ERROR_BADNUMBER , эта ошибка может возникнуть только в том случае, если функция >poptGetNextOpt() обрабатывает аргумент типа >РОРТ_ARG_INT или >POPT_ARG_LONG . |
>POPT_ERROR_ERRNO | Системный вызов был возвращен вместе с ошибкой, а >errno до сих пор содержит ошибку из системного вызова. Эту ошибку могут возвращать функции >poptReadConfigFile() и >poptReadDefaultConfig() . |
Приложения могут генерировать качественные сообщения об ошибках с помощью следующих двух функций.
>const char * poptStrerror(const int error);
Эта функция принимает код ошибки >popt
и возвращает строку с описанием ошибки, как и стандартная функция >strerror()
.
>char * poptBadOption(poptContext con, int flags);
Если во время выполнения функции >poptGetNextOpt()
возникла ошибка, эта функция возвращает параметр, вызвавший ошибку. Если аргументу >flags
присвоено значение >POPT_BADOPTION_NOALIAS
, возвращается самый внешний параметр. В противном случае аргумент >flags
должен иметь нулевое значение, а возвращаемый параметр может быть определен посредством псевдонима.
Для большинства приложений эти две функции существенно упрощают обработку ошибок >popt
. Если ошибка возникает во время выполнения большинства функций, то выводится сообщение об ошибке, а функция >poptStrerror()
возвращает строку с описанием ошибки. Если ошибка возникла во время синтаксического анализа аргумента, то код, подобный представленному ниже, отобразит информативное сообщение об ошибке.
>fprintf(stderr, "%s: %s\n",
> poptBadOption(optCon, POPT_BADOPTION_NOALIAS),
> poptStrerror(rc));
26.5. Псевдонимы параметров
Одним из основных преимуществ использования библиотеки >popt
по сравнению с функцией >getopt()
является возможность использования псевдонимов параметров. Благодаря ним пользователь может определить параметры, которые >popt
будет расширять их на другие параметры по мере их определения. Если стандартная программа >grep
использовала >popt
, то пользователи могли добавлять параметр >--text
, который расширялся до >-i -n -Е -2
, облегчая поиск информации в текстовых файлах.
26.5.1. Определение псевдонимов
Псевдонимы обычно определяются в двух местах: в >/etc/popt
и в файле >.popt
, хранящемся в домашнем каталоге пользователя (его можно найти через переменную окружения >HOME
). Оба файла имеют одинаковую форму в виде произвольного количества строк, форматированных следующим образом:
>appname alias newoption expansion
>appname
представляет имя приложения, которое должно быть таким же именем, как и имя в параметре >name
, переданное функции >poptGetContext()
. Благодаря этому в каждом файле можно определять псевдонимы для нескольких программ. Ключевое слово >alias
указывает на то, что определяется псевдоним; на данный момент конфигурационные файлы >popt
поддерживают только псевдонимы, однако в будущем появятся новые возможности. Следующим параметром является параметр, для которого необходимо задать псевдоним; это может быть как короткий, так и длинный параметр. Остальная часть строки определяет расширение псевдонима. Синтаксический анализ строки выполняется по аналогии с командой оболочки, в которой в качестве кавычек можно использовать символы

Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.

Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.

Эта книга поможет вам разобраться в премудростях операционной системы Windows Vista.Информационная насыщенность учебного материала позволяет утверждать, что мультимедийный курс будет интересен и новичкам, и опытным пользователям.

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.

Количество персональных компьютеров в нашей стране растет год от года. Сегодня во многих семьях имеется два или даже три компьютера.Чтобы воспользоваться всеми преимуществами такой ситуации, компьютеры в вашей квартире стоит объединить сетью. Это позволит вам играть по сети в компьютерные игры, совместно использовать дисковое пространство, принтеры, модемы и другие устройства, всю сеть можно соединить с Интернетом. А в офисах сеть между компьютерами просто необходима.Открывающиеся перспективы выглядят очень заманчиво.

Курс лекций, включенных в брошюру, знакомит читателя с популярными свободными программами и системами, полезными при преподавании информатики в средней школе. В обзор вошли основы открытых операционных систем, сведения о пакете «офисных» программ OpenOffice.org, коммуникационном пакете Mozilla, графическом редакторе GIMP, современных графических средах GNOME и KDE и других программах.Для преподавателей информатики и методистов, а также для студентов и аспирантов соответствующих специальностей.© 2002-3, Максим Отставнов.© 2002, Андрей Добровольский (раздел 3.1).Использован текст лекций, публиковавшихся автором в приложении к газете «Первое сентября» «Информатика» (http://inf.1september.ru) в 2002-3 г., материалы брошюры «Прикладные свободные программы в школе» (М.: 2003 г.), а также фрагменты статей, ранее публиковавшихся в журналах «Компьютерра» и «Домашний компьютер».Материалы, представленные в этой книге, также доступны в Интернет на странице www.otstavnov.com/fsft на условиях Свободной лицензии ГНУ на документацию (GNU FDL)