LINUX.ORG.RU

Работа с сигналами в Linux

 , ,


0

0

В современных операционных системах существует понятие межпроцессного взаимодействия (Inter-Process Communication – IPC) – это набор способов обмена данными между процессами и/или потоками. Одним из таких способов обмена служат сигналы. Концепцию сигналов поддерживает большинство операционных систем, но, например, Windows, не имеет их полноценной поддержки для использования в качестве одного из способов IPC – в подобных операционных системах сигналы лишь реализованы в стандартной библиотеке языка C.
В первой статье цикла – «Основы работы с сигналами» – описана общая концепция сигналов (так, как ее видит POSIX) и даны основы работы с сигналами – отсылка сигнала, ситуации, когда она происходит, обработка принятого сигнала и создание своего обработчика.
Во второй статье цикла – «Дополнительные сведения о сигналах» – будет дана информация о получении контекста сигнала и об отправке данных вместе с сигналом. Также будет рассказано о сигналах реального времени.

>>> Подробности

★★★

Проверено: isden ()

Годная статья. Понравилось.

Manhunt ★★★★★ ()

> Windows, не имеет

запятая не нужна.

anonymous ()

Чего только люди ни делают...

... лишь бы не читать APUE.

raorn ()

> В современных операционных системах

В UNIX сообщения и семафоры с 1983 года...

vvnab ()

Стивенс и еще раз Стивенс.

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

Группы процессов также упомянуты мельком, а эта тема как раз мало известна в широких кругах околосистемных квазипрограммистов. Разобрать на примере killpg, setpgid и т.п. было бы весьма полезно.

Но автор учится писать и стремится поделиться опытом, и это уже хорошо.

northerner ★★★ ()

Раньше, прочитав текст новости, я угадывал автора - IBM_dw. Только что я угадал автора, прочитав название.

bolmer ()

Это здорово!

Одна из наиболее хороших Ваших статей. Для тех, «кто очень хочет разобраться и понять»© (один из хороших знакомых), как оно, вообще - работать способно? :-)) Вот так-то... ;-)

R_Valery ★★★ ()
Ответ на: комментарий от northerner

Так это, как бы, после...

> Хорошо бы добавит конкретики, разбора ситуаций, примеров. Например, полезно было бы пояснить упоминание возможности отправить сигнал самому себе классическим...

Ни кому не мешало бы овладеть, за одно, и английским... ;-)

R_Valery ★★★ ()
Ответ на: комментарий от northerner

>>А статья непроработана и носит, скорее, поверхностный характер

публикуемые IBM_dW статьи абсолютно все непроработаны и носят, скорее, поверхностный характер ;)

alex_custov ★★★★★ ()

Любопытно, что у IBM_dW тоже есть скор.

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

Nebuchadnezzar ★★★★ ()
Ответ на: комментарий от alex_custov

на IBMdw есть и нормальные статьи, например, я не устану рекомендовать Дэвида Мерца, если кто Питоном интересуется. но это увы редкое исключение.

val-amart ★★★★★ ()
Ответ на: комментарий от alex_custov

Ну, это нормально, видать какое-то менеджерье откусывает бюджетов через ЛОР.

Sanitar ()
Ответ на: комментарий от val-amart

> на IBMdw есть и нормальные статьи, например, я не устану рекомендовать Дэвида Мерца, если кто Питоном интересуется. но это увы редкое исключение.

ссылку запость

www_linux_org_ru ★★★★★ ()

Как увидел в коде MAX_SENDED_SIGS, так сразу
подумал, что наши писали (нет слова sended в английском),
и точно, Андриенко Евгений.
Ну а если по делу, то статья ознакомительная,
вполне пригодная, но очень поверхностная.
Не описаны подводные камни, такие как, например,
невозможность вызывать большинство библиотечных
функций из обработчика; тот факт, что обработчик
может испортить errno, и как с этим бороться, и
ещё тонны нюансов.
Кстати, непонятна логика описания sa_mask, и,
сразу после этого, пример с использованием
sigprocmask(SIG_BLOCK, ...) внутри обработчика
(можно было той же sa_mask и воспользоваться).
Короче, после прочтения статьи, рекомендую вот
с этим ознакомиться:
http://mailman.alsa-project.org/pipermail/alsa-devel/2008-May/008030.html

anonymous ()

> We tryed access

Английскому ныне студентов не учат?..

ntp ()
Ответ на: комментарий от anonymous

(можно было той же sa_mask и воспользоваться).

Нет, всё даже ещё хуже.
Автор явно не слышал про флаг SA_NODEFER, и вот
этот кусок:
---
Добиться этого можно, заблокировав на время доставку сигнала, обработчик которого сейчас работает, при помощи системного вызова sigprocmask().
---
является полным бредом. Если флаг
SA_NODEFER не использовали, то сигнал,
обработчик которого сейчас работает, и
так заблокирован. Так что статья ещё и
ляпы содержит, жаль.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.