Читаем Linux API. Исчерпывающее руководство полностью

• Некоторые библиотечные функции возвращают информацию об ошибке точно таким же образом, что и системные вызовы: возвращают значение –1, а значение переменной errno указывает на конкретную ошибку. Примером такой функции может послужить remove(), удаляющая файл (используя системный вызов unlink()) или каталог (используя системный вызов rmdir()). Ошибки из этих функций могут определяться точно так же, как и ошибки из системных вызовов.

• Некоторые библиотечные функции возвращают при ошибке значение, отличное от –1, но все-таки устанавливают значение для переменной errno, чтобы указать на конкретные условия возникновения ошибки. Например, функция fopen() в случае ошибки возвращает нулевой указатель и устанавливает для переменной errno значение в зависимости от того, какой из положенных в основу ее работы системных вызовов завершился неудачно. Для определения типа таких ошибок могут применяться функции perror() и strerror().

• Другие библиотечные функции вообще не используют переменную errno. Метод определения наличия и причин ошибок зависит от конкретной функции и задокументирован на посвященной ей странице руководства. Для таких функций применение errno, perror() или strerror() с целью определения типа ошибок будет неприемлемо.

3.5. Пояснения по поводу примеров программ, приводимых в книге

В этом разделе будут рассмотрены различные соглашения и характерные особенности, которые обычно применяются к примерам программ, приводимым в книге.

3.5.1. Ключи и аргументы командной строки

Многие примеры программ в книге основаны на использовании ключей и аргументов командной строки, определяющих их поведение.

Традиционные ключи командной строки UNIX состоят из начального дефиса, буквы, идентифицирующей ключ, и необязательного аргумента. (Утилиты GNU предоставляют расширенный синтаксис ключей, состоящий из двух начальных дефисов, за которыми следует строка, идентифицирующая ключ, и необязательный аргумент.) Для анализа этих ключей используется стандартная библиотечная функция getopt().

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

3.5.2. Типовые функции и заголовочные файлы

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

Типовой заголовочный файл

В листинге 3.1 приведен заголовочный файл, используемый практически в каждой программе, показанной в книге. Он включает различные другие заголовочные файлы, используемые во многих примерах программ, определяет тип данных Boolean и определяет макрос для вычисления минимума и максимума двух числовых значений. Применение данного файла позволяет немного сократить размеры примеров программ.

Листинг 3.1. Заголовочный файл, используемый в большинстве примеров программ

lib/tlpi_hdr.h

#ifndef TLPI_HDR_H

#define TLPI_HDR_H /* Предотвращает случайное двойное включение */

#include /* Определения типов, используемые

многими программами */

#include  /* Стандартные функции ввода-вывода */

#include  /* Прототипы наиболее востребованных библиотечных

функций плюс константы EXIT_SUCCESS

и EXIT_FAILURE */

#include  /* Прототипы многих системных вызовов */

#include  /* Объявление errno и определение констант ошибок */

#include  /* Наиболее используемые функции обработки строк */

#include "get_num.h" /* Объявление наших функций для обработки числовых

аргументов (getInt(), getLong()) */

#include "error_functions.h" /* Объявление наших функций обработки ошибок */

typedef enum { FALSE, TRUE } Boolean;

#define min(m,n) ((m) < (n)? (m): (n))

#define max(m,n) ((m) > (n)? (m): (n))

#endif

lib/tlpi_hdr.h

Функции определения типа ошибок

Чтобы упростить обработку ошибок в наших примерах программ, мы используем функции определения типа ошибок. Объявление такой функции показано в листинге 3.2.

Листинг 3.2. Объявление для наиболее востребованных функций обработки ошибок

lib/error_functions.h

#ifndef ERROR_FUNCTIONS_H

#define ERROR_FUNCTIONS_H

void errMsg(const char *format…);

#ifdef __GNUC__

/* Этот макрос блокирует предупреждения компилятора при использовании

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных