Найти в Дзене
Old Programmer

Многозадачность в Linux. Язык C. Статья 7 (сигналы)

Это весь мой канал Old Programmer. Это: Программирование. Тематическое оглавление моего Zen-канала (Old Programmer). А тут собраны все ссылки по C и C++. А здесь перечень ссылок на ресурсы, посвященные многозадачности. Тема о сигналах в Linux также не маленькая и растянется на несколько статей. Сигналы в операционной системе Linux Что такое сигнал в Linux да и вообще в Unix системах? Это сообщение, которое посылается процессу, при наступлении некоторого события. Сигнал генерируется операционной системой. Например, если вы находитесь в терминале, где работает некоторый процесс и нажимаете Ctrl-C, то работающему приложению посылается специальный сигнал SIGINT, который получает процесс и реагирует на этот сигнал - по умолчанию прекращает свою работу. Сигнал можно посылать и программно и с помощью команды kill. Например можно сымитировать нажатие Ctrl-C, набрав в консоли команду kill -SIGINT 5020, где 5020 это идентификатор процесса, для которого и происходит эта имитация. В приложени

Это весь мой канал Old Programmer. Это: Программирование. Тематическое оглавление моего Zen-канала (Old Programmer). А тут собраны все ссылки по C и C++. А здесь перечень ссылок на ресурсы, посвященные многозадачности.

Тема о сигналах в Linux также не маленькая и растянется на несколько статей.

Сигналы в операционной системе Linux

Что такое сигнал в Linux да и вообще в Unix системах? Это сообщение, которое посылается процессу, при наступлении некоторого события. Сигнал генерируется операционной системой. Например, если вы находитесь в терминале, где работает некоторый процесс и нажимаете Ctrl-C, то работающему приложению посылается специальный сигнал SIGINT, который получает процесс и реагирует на этот сигнал - по умолчанию прекращает свою работу. Сигнал можно посылать и программно и с помощью команды kill. Например можно сымитировать нажатие Ctrl-C, набрав в консоли команду kill -SIGINT 5020, где 5020 это идентификатор процесса, для которого и происходит эта имитация.

Kill him!
Kill him!

В приложении можно определить функцию, которая будет перехватывать определенный сигнал (кроме сигнала SIGKILL). Перехватить сигнал можно с помощью библиотечной функции signal(), которая имеет два параметра: перехватываемый сигнал и адрес функции перехвата. Вместо адреса функции также может быть и опция: SIG_IGN - игнорировать сигнал, SIG_DFL - вернуться к обработке по умолчанию. Пример перехвата сигнала Ctrl-C приводится в программе multi1070.c.

В следующей статье я продолжу рассмотрение вопроса о сигналах.

Не забывайте подписываться на мой канал Old Programmer и параллельно программируем.

Фрагмент программы multi1070.c
Фрагмент программы multi1070.c