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

• SIGPIPE — генерируется, когда процесс пытается выполнить запись в канал (конвейер), FIFO или сокет, для которых нет соответствующего процесса чтения. Как правило, это происходит, если файловый дескриптор читающего процесса был закрыт для канала IPC (что бы это ни значило). См. раздел 44.2 для получения более подробной информации.

• SIGPOLL — унаследован от System V, в Linux является синонимом сигнала SIGIO.

• SIGPROF — ядро генерирует этот сигнал по окончании времени профилирующего таймера, установленного вызовом функции setitimer() (см. раздел 23.1). Профилирующий таймер — это таймер, отсчитывающий время ЦПУ, затрачиваемое процессом. В отличие от виртуального (см. SIGVTALRM ниже), профилирующий таймер отсчитывает время ЦПУ, затрачиваемое как в режиме пользователя, так и в режиме ядра.

• SIGPWR — это сигнал сбоя подачи питания. В системах с источниками бесперебойного питания (ИБП) возможно установить фоновый процесс, который бы осуществлял мониторинг уровня заряда вспомогательного аккумулятора в случае сбоя подачи питания. Если заряд батареи близок к нулю (после длительного отсутствия подачи электрического тока), то процесс, осуществляющий мониторинг, отправляет сигнал SIGPWR в процесс init, интерпретирующий данный сигнал как требование завершить работу системы быстро и в установленном порядке.

• SIGQUIT — когда пользователь вводит символ выхода (обычно Ctrl+\) с клавиатуры, этот сигнал посылается группе приоритетных процессов. По умолчанию он завершает процесс и создает дамп ядра, который затем может быть использован для отладки. Применение SIGQUIT таким образом может быть полезным, если программа застряла в бесконечном цикле или не отвечает по другим причинам. Нажимая Ctrl+\, затем загружая получившийся дамп ядра с помощью отладчика gdb и используя команду backtrace для получения трассировки стека, мы можем выяснить, какая часть программного кода выполнялась. ([Matloff, 2008] описывает использование gdb.)

• SIGSEGV — очень распространенный сигнал. Генерируется, когда программа обращается по неверной ссылке на ячейку в памяти. Ссылка может быть неверной из-за того, что страница, на которую ссылаются, не существует (например, находится в неразмеченной области где-то между кучей и стеком), процесс пытался обновить участок в памяти только для чтения (например, текстовый сегмент программы или участок отображаемой памяти, помеченный «только для чтения») или процесс пытался получить доступ к части памяти ядра, работая в режиме пользователя (см. раздел 2.1). В языке С такие события часто являются результатом разыменования указателя, содержащего неверный адрес (например, неинициализированного указателя) или передачи неверного аргумента в вызов функции. Название сигнала происходит от термина segmentation violation — «нарушение сегментации».

• SIGSTKFLT — задокументирован в signal(7) как «ошибка стека на сопроцессоре». Сигнал определен, но не используется в Linux.

• SIGSTOP — сигнал императивной остановки процесса. Не может быть заблокирован, проигнорирован или перехвачен обработчиком, то есть он всегда останавливает процесс.

• SIGSYS — генерируется, если процесс совершает «плохой» системный вызов. Это значит, что процесс выполнил инструкцию, которая была интерпретирована как прерывание системного вызова, но номер связанного системного вызова не был допустимым.

• SIGTERM — стандартный сигнал, который применяется для завершения процесса и по умолчанию посылается командами kill и killall. Иногда пользователи явно посылают сигнал SIGKILL процессу, используя команды kill — KILL или kill –9. Но это, как правило, ошибка. У хорошо спроектированного приложения будет обработчик для SIGTERM, который вызывает корректное завершение приложения, позволяя ему стереть временные файлы и заблаговременно высвободить другие ресурсы. Завершение процесса с помощью SIGKILL обходит обработчик SIGTERM. Следовательно, мы всегда должны сначала попытаться завершить процесс, используя SIGTERM, и приберечь SIGKILL в качестве последнего средства для завершения вышедших из-под контроля процессов, не отвечающих на SIGTERM.

• SIGTRAP — сигнал используется для реализации точек прерывания отладчика и отслеживания системных вызовов, выполняемых утилитой strace(1). Для получения более подробной информации см. страницу справочника, посвященную вызову ptrace(2).

• SIGTSTP — это сигнал стоп, отправляемый группе приоритетных процессов, когда пользователь вводит с клавиатуры символ приостановки (обычно Ctrl+Z). В главе 34 в деталях описываются группы процессов (задания), собственно контроль задания, а также когда и как программе может потребоваться обработать данный сигнал. Имя этого сигнала происходит от английского terminal stop — «остановка с терминала».

• SIGTTIN — во время работы в оболочке, управляющей заданием, драйвер терминала отправляет данный сигнал группе фоновых процессов при попытке чтения (read()) с управляющего терминала. По умолчанию данный сигнал останавливает процесс.

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

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

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#.Введите сюда краткую аннотацию

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

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