Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Акуленок_часть1.doc
Скачиваний:
35
Добавлен:
13.11.2019
Размер:
1.43 Mб
Скачать

Сигналы posix 1.1

Сигнал

Номер

Значение

SIGHUP

1

Разрыв связи с управляющим терминалом или управляющим процессом

SIGINT

2

Прерывание с клавиатуры

SIGQUIT

3

Сигнал выхода дан с клавиатуры

SIGILL

4

Недопустимая инструкция

SIGABRT

6

Сигнал abort получен от вызванной кем-то функции abort

SIGFPE

8

exception: ошибка вычислений с плавающей запятой

SIGKILL

9

Безусловное завершение процесса

SIGSEGV

11

Неверный адрес памяти

Неверный адрес памяти

13

Запись в несуществующий канал

SIGALRM

14

Сигнал timer от функции alarm

SIGTERM

15

Завершение

SIGUSR1

30,10,16

Определяется пользователем

SIGUSR2

31,12,17

Определяется пользователем

SIGCHLD

20,17,18

Дочерний процесс остановлен или принудительно завершен

SIGCONT

19,18,25

Продолжить выполнение, если оно было остановлено

SIGSTOP

17,19,23

Остановить процесс

SIGTSTP

18,20,24

Остановить ввод с терминала

SIGTTIN

21,21,26

Ввод с терминала для фонового процесса

SIGTTOU

22,22,27

Вывод с терминала для фонового процесса

По умолчанию команда kill посылает сигнал с номером 15 – SIGTERM, действие по умолчанию для которого – это завершение выполнения процесса, получившего сигнал.

Иногда процесс продолжает существовать и после отправления сигнала SIGTERM. В этом случае можно применить более жесткое средство – по­слать процессу сигнал SIGKILL, с номером (9), – поскольку этот сигнал нельзя ни перехватить, ни игнорировать.

3.8.2. Очереди сообщений

Очереди сообщений (message queues) – это средства, обеспечивающие возможность посылки процессом сообщений другому произвольному процессу.

Очередь сообщений по существу представляет собой механизм, в котором один процесс присоединяет к некоторой информации свою порцию данных с заданными признаками, а другой процесс разыскивает информацию, совпадающую с желаемыми признаками. Различные признаки могут позволить процессам проверять или записывать в одну и ту же очередь сообщения, причем последние могут читаться без соблюдения какого бы то ни было порядка.

Ядро хранит сообщения в виде связного списка (очереди), а дескриптор очереди сообщений является индексом в массиве заголовков очередей сообщений. В дополнение к информации, общей для всех механизмов IPC в UNIX System V, в заголовке очереди хранятся также:

  • указатели на первое и последнее сообщение в данной очереди;

  • число сообщений и общее количество байтов данных во всех них вместе взятых;

  • идентификаторы процессов, которые последними послали или приняли сообщение через данную очередь;

  • временные метки последних выполненных операций.

Для того чтобы ядро успешно поставило указанное сообщение в указанную очередь сообщений, должны быть выполнены следующие условия: обращающийся процесс должен иметь соответствующие права по записи в данную очередь сообщений; длина сообщения не должна превосходить установленный в системе верхний предел; общая длина сообщений (включая вновь посылаемое) не должна превосходить установленный предел; указанный в сообщении тип сообщения должен быть положительным целым числом. В этом случае обратившийся процесс успешно продолжает свое выполнение, оставив отправленное сообщение в буфере очереди сообщений. Тогда ядро активизирует (пробуждает) все процессы, ожидающие поступления сообщений из данной очереди.