12.2.1. Посылка сигналов

12.2.1. Посылка сигналов

Посылка сигналов от одного процесса другому обычно осуществляется с помощью системного вызова kill(). Этот системный вызов подробно обсуждался в главе 10. Вариантом kill() является tkill(), который не предназначен для прямого использования в программах.

int tkill(pid_t pid, int signum);

Существуют два отличия между kill() и tkill()[59]. Первое: pid должен быть положительным числом; tkill() не может использоваться для отправки сигналов группам процессов, как это может kill(). Другое отличие позволяет обработчикам сигналов определять, применялся ли вызов kill() или tkill() для генерации сигнала: подробности см. далее в главе.

Функция raise(), которая представляет собой способ генерации сигналов, указанный ANSI/ISO, использует системный вызов tkill() для генерации сигналов в системах Linux.

int raise(int signum);

Функция raise() посылает текущему процессу сигнал, указанный в signum[60].

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

10.2. Действия сигналов

Из книги автора

10.2. Действия сигналов Каждый сигнал (вскоре мы представим полный список) имеет связанное с ним действие по умолчанию. POSIX обозначает это как диспозицию (disposition) сигнала. Это то действие, которое ядро осуществляет для процесса, когда поступает определенный сигнал. Действие


10.4.3. Игнорирование сигналов

Из книги автора

10.4.3. Игнорирование сигналов Более практично, когда вызывается обработчик сигнала, это означает, что программа должна завершиться и выйти. Было бы раздражающим, если бы большинство программ по получении SIGINT выводили бы сообщение и продолжали работу; смысл сигнала в том,


12.1. Концепция сигналов

Из книги автора

12.1. Концепция сигналов 12.1.1. Жизненный цикл сигнала Сигналы имеют четко определенный жизненный цикл: они создаются, сохраняются до тех пор, пока ядро не выполнит определенное действие на основе сигнала, а затем вызывают совершение этого действия. Создание сигнала


12.2.3. Перехват сигналов

Из книги автора

12.2.3. Перехват сигналов Вместо использования функции signal() (чья семантика в процессе эволюции стала неправильной) POSIX-программы регистрируют обработчики сигналов с помощью sigaction().#include <signal.h>int sigaction(int signum, struct sigaction *act, struct sigaction *oact);Этот системный вызов устанавливает


12.2.6. Ожидание сигналов

Из книги автора

12.2.6. Ожидание сигналов Когда программа построена преимущественно вокруг сигналов, часто необходимо, чтобы она ожидала появления какого-то сигнала, прежде чем продолжать работу. Системный вызов pause() предоставляет простую возможность для этого.#include <unistd.h>int


12.3.1. Описание сигналов

Из книги автора

12.3.1. Описание сигналов Иногда приложения нуждаются в описании сигнала для отображения пользователю или помещения в журнал. Существуют три способа сделать это (см. главу 9). К сожалению, ни один из них не стандартизован.Самый старый метод предусматривает применение sys_siglist


7.2.1 Обработка сигналов

Из книги автора

7.2.1 Обработка сигналов Ядро обрабатывает сигналы в контексте того процесса, который получает их, поэтому чтобы обработать сигналы, нужно запустить процесс. Существует три способа обработки сигналов: процесс завершается по получении сигнала, не обращает внимание на


7.2.3 Посылка сигналов процессами

Из книги автора

7.2.3 Посылка сигналов процессами Для посылки сигналов процессы используют системную функцию kill. Синтаксис вызова функции:kill(pid, signum)где в pid указывается адресат посылаемого сигнала (область действия сигнала), а в signum — номер посылаемого сигнала. Связь между значением pid и


Изменение звуковых сигналов

Из книги автора

Изменение звуковых сигналов Помимо смены изображения, в программе можно заменить звуковые сигналы, которыми сопровождаются события в программе. Чтобы это сделать, выполните следующие действия.1. Нажмите кнопку Личные настройки на открытой панели настроек и в


8.7. Обработка сигналов и протоколирование

Из книги автора

8.7. Обработка сигналов и протоколирование Обычно при завершении сеанса работы пользователя система посылает всем запущенным им процессам сигналы (п.3.3.2), которые приводят к прекращению этих процессов. Возможно, вам понадобится обеспечить своему сценарию возможность


23.3.4. Обработка сигналов

Из книги автора

23.3.4. Обработка сигналов Перед тем, как перейти к следующему пункту, нужно еще раз рассмотреть функцию gtk_signal_connect(). Данной функции нужно передать четыре параметра:? GtkObject *object — объект, которому может быть послан сигнал;? const gchar *name — имя сигнала, например, «destroy»;? GtkSignalFunc func


Перехват сигналов

Из книги автора

Перехват сигналов Вы можете использовать встроенную в bash программу trap для перехвата сигналов в своих программах. Это хороший способ изящно завершать работу программы. Например, если пользователь, когда ваша программа работает, нажмет CTRL-C — программе будет отправлен


4.5.1. Обработка сигналов

Из книги автора

4.5.1. Обработка сигналов Предположим, что многопотоковая программа принимает сигнал. В каком потоке будет вызван обработчик сигнала? Это зависит от версии UNIX. В Linux поведение программы объясняется тем. что потоки на самом деле реализуются в виде процессов.Каждый поток в Linux


Посылка зашифрованного текста через каналы электронной почты: формат Radix-64.

Из книги автора

Посылка зашифрованного текста через каналы электронной почты: формат Radix-64. Многие системы электронной почты поддерживают только сообщения в виде ASCII-текста, а не в виде двоичных 8-битных данных, из которых состоят зашифрованные тексты. Чтобы обойти эту проблему, PGP


18.5.5. Посылка сигналов серверам с помощью цикла for

Из книги автора

18.5.5. Посылка сигналов серверам с помощью цикла for Поскольку цикл for может обработать каждое слово списка, установим переменную для отображения названий некоторых серверов сети. Воспользуемся циклом for для посылки сигналов каждому из этих серверов.$ pg


26.3.4. Игнорирование сигналов

Из книги автора

26.3.4. Игнорирование сигналов Когда пользователь регистрируется в системе, просматривается файл /etc/profile; нежелательно, чтобы пользователь прерывал этот процесс. Обычно задается перехват, или игнорирование, сигналов 1, 2, 3 и 15, но потом при просмотре сообщения motd (ежедневного