Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Межпроцессное взаимодействие

.pdf
Скачиваний:
19
Добавлен:
22.03.2016
Размер:
246.11 Кб
Скачать

его

для всевозможных

уведомлений. Обработчик по умолчанию завершает процесс.

Вывод списка сигналов конкретной системы

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 — процесс не существует либо это процесс-зомби.