10.4.7. Наша история до настоящего времени, эпизод 1
10.4.7. Наша история до настоящего времени, эпизод 1
Сигналы являются сложной темой, и она становится еще более сбивающей с толку. Поэтому давайте на время сделаем остановку, сделаем шаг назад и подведем итог обсужденному до сих пор:
• Сигналы являются указанием того, что произошло некоторое внешнее событие.
• raise() является функцией ISO С для отправки сигнала текущему процессу. Как отправлять сигналы другим процессам, нам еще предстоит описать.
• signal() контролирует диспозицию сигнала, т.е. реакцию процесса на сигнал, когда он появляется. Сигнал можно оставить системе для обработки по умолчанию, проигнорировать или перехватить.
• Когда сигнал перехватывается, вызывается функция-обработчик. Вот где сложность начинает поднимать свою безобразную голову:
• ISO С не определяет, восстанавливается ли диспозиция сигнала по умолчанию до вызова обработчика или она остается на месте. Первое является поведением V7 и современных систем System V, таких, как Solaris. Последнее является поведением BSD, используемым также в GNU/Linux. (Для форсирования поведения BSD может использоваться функция POSIX bsd_signal().)
• То, что случается при прерывании сигналом системного вызова, также различается в традиционной и BSD линейках. Традиционные системы возвращают -1 с errno, установленным в EINTR. BSD системы повторно запускают системный вызов после возвращения из обработчика. Макрос GLIBC TEMP_FAILURE_RETRY() может помочь вам написать код для обработки системных вызовов, возвращающих -1 с errno, установленным в EINTR.
POSIX требует, чтобы частично выполненный системный вызов возвращал успешное завершение, указав, сколько работы было выполнено. Системный вызов, который еще не начал выполняться, вызывается повторно.
• Механизм signal() предоставляет плодотворную почву для появления условий гонки. В этой ситуации помогает тип данных ISO С sig_atomic_t, но он не решает проблему, и определенный таким способом механизм не может обезопасить от проявления условий гонки.
• Применяется ряд дополнительных предостережений, и в частности, из обработчика сигнала безопасно может вызываться лишь часть стандартных библиотечных функций.
Несмотря на эти проблемы интерфейса signal() для простых программ достаточно, и он все еще широко используется.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
10.4.7. Наша история до настоящего времени, эпизод 1
10.4.7. Наша история до настоящего времени, эпизод 1 Сигналы являются сложной темой, и она становится еще более сбивающей с толку. Поэтому давайте на время сделаем остановку, сделаем шаг назад и подведем итог обсужденному до сих пор:• Сигналы являются указанием того, что
Действительно ли наша эпоха другая?
Действительно ли наша эпоха другая? Здесь, в самом конце книги, нужно вернуться к большому вопросу, поставленному в начале: правда ли, что с интернетом все окажется иначе? Или ему суждено преобразоваться в несколько гигантских многоуровневых монополий, которые будут
2.3. Движение открытого исходного кода: с 1998 года до настоящего времени
2.3. Движение открытого исходного кода: с 1998 года до настоящего времени К моменту выхода браузера Mozilla в 1998 году хакерское сообщество наиболее правильно было бы охарактеризовать как множество группировок или братств. В него входили: движение свободного программного
2.3. Движение открытого исходного кода: с 1998 года до настоящего времени
2.3. Движение открытого исходного кода: с 1998 года до настоящего времени К моменту выхода браузера Mozilla в 1998 году хакерское сообщество наиболее правильно было бы охарактеризовать как множество группировок или братств. В него входили: движение свободного программного
Наша вычислительная система
Наша вычислительная система Некоторые детали реализации языка Си, например объем памяти, требуемый для того, чтобы поместить туда число, зависят от конкретной системы. Когда мы рассматриваем какие-нибудь при. меры и употребляем слова "наша система", мы имеем в виду
ТЕМА НОМЕРА: Наша сила в тапках
ТЕМА НОМЕРА: Наша сила в тапках Последней каплей, переполнившей чаши моего любопытства и терпения и послужившей затравкой для написания сегодняшнего обзора, стала новость о появлении в Японии домашних тапочек с подогревом. Все бы ничего, да питаются тапки… от USB. Коли
ГОСТИНАЯ: Наша песенка спета?
ГОСТИНАЯ: Наша песенка спета? Автор: Дмитрий ШабановЧем дальше, тем больше убеждаюсь, что выработка собственного мнения на основе рациональных аргументов – отживший способ отношений с действительностью. Доводов, требующих рассуждения, нет ни в жизни, ни в телевизоре –
ФМ-ВЕЩАНИЕ: Shareware как бизнес. Эпизод 2 —Страх
ФМ-ВЕЩАНИЕ: Shareware как бизнес. Эпизод 2 —Страх Автор: Алексей РовдоЗадумывались ли вы когда-нибудь над истинными мотивами своих решений и поступков? Не понарошку, не для публики, а по-настоящему глубоко, и в первую очередь для того, чтобы понять самого себя? Не торопитесь с
Стрелы времени: история хронометрирования Евгений Лебеденко, Mobi.ru
Стрелы времени: история хронометрирования Евгений Лебеденко, Mobi.ru Опубликовано 10 января 2012 года Время. Удивительно многогранная категория, нашедшая свое место и у физиков (мера движения материи, координата четырёхмерного пространства-времени), и у
Голубятня: Наша ниша Сергей Голубицкий
Голубятня: Наша ниша Сергей Голубицкий Опубликовано 21 января 2011 года Хочется порассуждать о нашей айтишной нише. Спешу успокоить: поводов для волнения нет никаких, потому как все мысли мои навеяны личными переживаниями, никак не связанными с
На смерть PC, эпизод цатый, или Спасут ли Intel субатомные технологии? Евгений Золотов
На смерть PC, эпизод цатый, или Спасут ли Intel субатомные технологии? Евгений Золотов Опубликовано 18 сентября 2013 Каждый раз, когда разговор в этой колонке заходит о «здоровье» PC-индустрии, я поражаюсь комментариям читателей. Можно рассуждать о
Рейс MH370: эпизод третий, подводный Евгений Золотов
Рейс MH370: эпизод третий, подводный Евгений Золотов Опубликовано 09 апреля 2014 Поиски «Боинга 777-200», ночью 8 марта вылетевшего из Куала-Лумпура в Пекин и пропавшего без следа, продолжаются. Есть смысл вернуться к ним и нам. Рейс MH370 искали на земле, в
Голубятня: Наша Горбушка
Голубятня: Наша Горбушка Автор: Сергей ГолубицкийОпубликовано 18 июня 2012 годаВчера провел несколько часов на Горбушке, чего не делал уже лет несколько. Зачем ездил - не скажу, чтобы не будировать Тех, Кто Никогда Не Дремлет, тем более, что «Голубятня» совсем о других
Стрелы времени: история хронометрирования
Стрелы времени: история хронометрирования Автор: Евгений Лебеденко, Mobi.ruОпубликовано 10 января 2012 годаВремя. Удивительно многогранная категория, нашедшая свое место и у физиков (мера движения материи, координата четырёхмерного пространства-времени), и у лириков,
Глава 2. Эпизод из программистской практики
Глава 2. Эпизод из программистской практики День за днем программист выполняет одну и ту же последовательность действий, которую можно назвать программным проектом в миниатюре: он изучает задачу, четко связанную с возможностью продукта, в которой нуждается заказчик,