Межпроцессное взаимодействие
.pdfего
для всевозможных
уведомлений. Обработчик по умолчанию завершает процесс.
Вывод списка сигналов конкретной системы
kill -l
Системные вызовы
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal (int signo, sighandler_t handler);
Функция signal
handler:
●функия void my_handler (int signo);
●SIG_DFL - действовать по умолчанию
●SIG_IGN - игорировать сигнал
Пример
Программа не закрывающаяся по Control+C
signal.c
Сигналы
Использование сигналов при межпроцессном обмене
Поведение при fork
Дочерний процесс наследует все сигнальные действия от своего родителя
Сигналы ожидающие обработки не наследуются
Поведение при exec
Все сигналы действуют в режиме по умолчанию
Сигналы, ожидающие обработки, наследуются
Отправка сигнала
#include <sys/types.h> #include <signal.h>
int kill (pid_t pid, int signo);
Возвращает 0 в случае успеха
Ошибки
-1 в случае ошибки и установка errno:
EINVAL — сигнал, обозначенный signo, является недопустимым;
EPERM — вызывающий процесс не обладает достаточными правами доступа, чтобы послать сигнал какому-либо запрошенному процессу;
ESRCH — процесс не существует либо это процесс-зомби.