Здавалка
Главная | Обратная связь

Список предопределённых сигналов



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

SIGKILL - Этот сигнал приводит к завершению получившего его процесса. Это единственный сигнал, который не может игнорироваться и для которого нельзя назначить собственный обработчик

SIGTERM - Этот сигнал - запрос на завершение процесса. Выдачу этого сигнала, например, включает в себя команда (не системный вызов!) kill. Подразумевается, что процесс, получивший этот сигнал, должен завершиться, однако процесс может установить игнорирование этого сигнала или назначить для пего собственный обработчик.

SIGCHLD - Этот сигнал система посылает родительскому процессу при завершении любого его дочернего процесса. Реакция на этот сигнал, установленная по умолчанию, - игнорирование. Родительский процесс может не заботиться об обработке этого сигнала, если только он не хочет использовать его для синхронизации своего выполнения с дочерним процессом.

SIGALRM - Этот сигнал используется для отсчета временных интервалов. Процесс может установить некоторый временной интервал при помощи системных вызовов alarm () или setitimer (), и по истечении заданного интервала система пошлет ему сигнал SIGALRM.

SIGUSR1иSIGUSR2 - За этими сигналами являются зарезервированными, им не соответствуют никакие системные назначения. Процессы могут посылать эти сигналы друг другу и интерпретировать их по своему усмотрению.

Лабораторная работа №5

Тема: Сигналы для межпроцессного взаимодействия. Сигнальные часы (таймеры).

Цель работы: овладеть навыками использования сигналов для межпроцессного взаимодействия, ознакомиться с использованием таймеров.

 

Теоретические сведения.

Сигналы могут использоваться как средство межпроцессного взаимодействия. Примеры программ.

Текст программы alarm.с:

/*'$cat alarm. с'*/

#include <stdio.h>

main()

{

alarm(3); //заведен будильник на 3 сек

printf("Looping forever\n");

while(1);

printf("This line should never be executed\n");

}

Выполнение программы alarm.c:

'$alarm'

Looping forever

Alarm clock

Описание работы программы alarm.c:

Системным вызовом alarm() заводится будильник на 3 секунды. Далее печатается текст "Looping forever'". Далее начинается бесконечный цикл, поэтому текст не будет напечатан. Как только проходит 3 секунды, ставится отметка о будильнике текстом "Alarm clock". а1аrm(<время>) сигнал тревоги, посылаемый процессу, который выполняется в режиме задачи.

Лабораторная работа №6

 

Тема: Синхронизация процессов. Защита критического кода и формирование цепочки обработчиков прерываний.

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







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.