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

• si_errno — если значение этого поля не равно 0, значит, оно содержит номер ошибки (как errno), идентифицирующий причину отправки сигнала. Как правило, это поле в Linux не задействуется.

• si_addr — устанавливается только для аппаратно генерируемых сигналов SIGBUS, SIGSEGV, SIGILL и SIGFPE. Для сигналов SIGBUS и SIGSEGV оно содержит адрес, вызвавший возникновение ошибки неверной ссылки на участок памяти. Для сигналов SIGILL и SIGFPE это поле содержит адрес программной инструкции, вызвавшей подачу сигнала.

Следующие поля, не являющиеся стандартными расширениями Linux, устанавливаются только по получении сигнала, генерируемого по истечении времени таймера POSIX (см. раздел 23.6).

• si_timerid — содержит идентификатор, используемый внутри ядра для обозначения таймера.

• si_overrun — устанавливается равным счетчику переполнения таймера.

Следующие поля устанавливаются лишь по получении сигнала SIGIO (см. раздел 59.3).

• si_band — содержит значение «связывающего события», ассоциированного с событием ввода-вывода. (В версиях glibc вплоть до 2.3.2 поле si_band имело тип int.)

• si_fd — хранит номер файлового дескриптора, ассоциированного с событием ввода-вывода. Это поле не указано в стандарте SUSv3, но есть во многих реализациях.

Следующие поля устанавливаются только по получении сигнала SIGCHLD (см. раздел 26.3).

• si_status — может содержать либо код завершения дочернего процесса (если значение поля si_code установлено как CLD_EXITED), либо номер сигнала, отправленного в дочерний процесс (иными словами, номер сигнала, завершившего или остановившего дочерний процесс, как описано в подразделе 26.1.3).

• si_utime — содержит пользовательское время ЦП, затраченное дочерним процессом. В версиях ядра 2.6 старше 2.6.27 это время измеряется тактами системных часов (деление на sysconf(_SC_CLK_TCK)). В версиях ядра 2.6 младше 2.6.27 из-за допущенной ошибки это поле отражало время, измеряемое в тактах, частота которых могла быть изменена пользователем (см. раздел 10.6). Это поле не установлено стандартом SUSv3, однако присутствует во многих реализациях.

• si_stime — хранит системное время ЦП, затраченное дочерним процессом. См. описание поля si_utime. Не установлено стандартом SUSv3, однако присутствует во многих реализациях.

Поле si_code предоставляет дополнительную информацию об источнике сигнала с помощью значений, приведенных в табл. 21.2. Не все значения, зависящие от конкретного сигнала и приведенные в таблице, свойственны для всех реализаций UNIX и аппаратных архитектур (особенно если речь идет об аппаратно генерируемых сигналах: SIGBUS, SIGSEGV, SIGILL и SIGFPE). Однако все эти константы определены в Linux, и большинство из них установлено стандартом SUSv3.

Обратите внимание на следующие аспекты значений, приведенных в табл. 21.2.

• Значения SI_KERNEL и SI_SIGIO зависят от версии Linux. Они не установлены стандартом SUSv3 и не свойственны абсолютно всем реализациям UNIX.

• Константа SI_SIGIO используется только в Linux версии 2.2. Начиная с версии ядра 2.4, эта константа в Linux была заменена на POLL_*, также приведенные в таблице.


Таблица 21.2. Значения, возвращаемые полем si_code структуры siginfo_t

Сигнал — Значение поля si_code — Источник сигнала

Любой

SI_ASYNCIO — Завершение асинхронной операции ввода-вывода (AIO)

SI_KERNEL — Отправлен ядром (например, сигнал драйвера терминала)

SI_MESGQ — Прибытие сообщения в очередь сообщений POSIX (начиная с Linux 2.6)

SI_QUEUE — Сигнал реального времени от пользовательского процесса через sigqueue()

SI_SIGIO — Сигнал SIGIO (Только Linux 2.2)

SI_TIMER — Истечение времени таймера POSIX (реальное время)

SI_TKILL — Пользовательский процесс через tkill() или tgkill() (начиная с Linux 2.4.19)

SI_USER — Пользовательский процесс через kill()

SIGBUS

BUS_ADRALN — Неверное выравнивание адреса

BUS_ADREER — Несуществующий физический адрес

BUS_MCEERR_AO — Аппаратная ошибка памяти, возможно действие (начиная с Linux 2.6.32)

BUS_MCEERR_AR — Аппаратная ошибка памяти, требуется действие (начиная с Linux 2.6.32)

BUS_OBJERR — Объектная аппаратная ошибка (зависит от объекта)

SIGCHLD

CLD_CONTINUED — Дочерний процесс продолжен по сигналу SIGCONT (начиная с Linux 2.6.9)

CLD_DUMPED — Дочерний процесс завершен аварийно с дампом ядра

CLD_EXITED — Из дочернего процесса осуществлен выход


CLD_KILLED — Дочерний процесс завершен аварийно без дампа ядра

CLD_STOPPED — Дочерний процесс остановлен

CLD_TRAPPED — Отслеживаемый дочерний процесс остановлен

SIGFPE

FPE_FLTDIV — Деление на ноль числа с плавающей точкой

FPE_FLTINV — Неверная операция с числом с плавающей точкой

FPE_FLTOVF — Переполнение числа с плавающей точкой

FPE_FLTRES — Неточный результат операции с числом с плавающей точкой

FPE_FLTUND — Исчезновение значащих разрядов числа с плавающей точкой

FPE_INTDIV — Целочисленное деление на ноль

FPE_INTOVF — Переполнение целого числа

FPE_SUB — Основание числа вне допустимого диапазона

SIGILL

ILL_BADSTK — Внутренняя ошибка стека

ILL_COPROC — Ошибка сопроцессора

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

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

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

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

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

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

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

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