Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО (Лупин) / Лабы / Лабы по Linux / Лабораторная работа 4.doc
Скачиваний:
63
Добавлен:
17.04.2013
Размер:
95.23 Кб
Скачать

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

Shell-программирование: сигналы и прерывания.

Хранение файлов во внешней памяти.

Общие cведения о системе

Команды, изучаемые в данной лабораторной работе:

1. kill передача сигнала процессу

2. trap защита от прерывания

3. tar создание архива

4. cpioработа с архивами

Сигнал- некоторая переменная, передаваемая процессу, когда наступает определенное

событие. Иначе, логическая переменная, посылаемая shell-программе по наступлении определенного события.

Сигнал Событие

EXITВыход изshell’а

HUPЗависание - посылается фоновому процессу при выходе из системы

INT<Ctrl>+<c> - прерывание

QUIT<Ctrl>+<\> - прекращение работы (генерирует файл ядра)

KILLУничтожение процесса

TERMПрекращение работы программы

Команда kill

Назначение: Командаkillпередает сигнал, заданный в явном виде, процессу.

Синтаксис:

kill[-sсигнал]идентификатор_процесса(PID)

kill-sсигналидент_процесса Передача сигнала процессу с номеромидент_процесс

killидент_процесса Передача сигналаTERMпроцессу с номеромидент_процесса

kill-sKILLидент_процесса Передача сигнала безусловного уничтожения процессу с номеромидент_процесса

trap ‘команды’ сигнал Перехват сигнала и запуск команды

stty -aПросмотр сигналов

Прерывание - способ захватывания сигналов, которые могут быть посланы процессам, и

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

Программы обработки прерываний (обработчики прерываний)- действия в ответ на

прерывания.

Команда trap

Назначение:Бывает необходимо защитить выполнение программы от прерывания.

Для защиты от прерываний существует команда trap, которая может быть использована вshell-программах с целью перехвата сигнала до того, как он удалит (уничтожит) процесс и выполнения некоторого дополнительного или альтернативного действия. Командуtrapследует применить для указания в явном виде сигналов и связанных с ними соответствующих действий, которые должны быть выполнены. Команды могут представлять собой список команд системыOCLinux, отделяемых;.Можно также создатьshell-программу, которая выполнит требуемые действия и указать имя этой программы в качестве аргумента. Обычно командыtrapпомещаются в началеshell-программы. Сигналы о прерывании определютсяshell’ом , когда он читает командуtrap. Прерывания активизируются по получении соответствующего сигнала.

Синтаксис :

trap‘команды’ сигнал[сигнал... ] выполняютсякомандыпо получениисигнала

Пример:

$cat > mytrap

trap‘echo bye; exit’ INT QUIT TERM

while true

do

echo hello

done

$mytrap

hello

hello

hello

bye -------------------------------------- нажать <Ctrl>+<c>

$

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

Перехват сигнала.Вместо прекращения выполнения процесса будут выполнены указанные специальные команды.

Игнорирование сигнала. Используется еслиshell-программа работает с важными файлами и важно сохранить их содержимое, несмотря на прерывание.

Синтаксис :

trap‘ ’ сигнал[сигнал... ]

Пример:

$ cat > mytrap2

trap‘ ’ INT

while true

do

echo hello

done

$ mytrap2

hello

hello-------------------------------------- нажать <Ctrl>+<c> (проигнорирован)

hello

hello -------------------------------------- нажать <Ctrl>+<\> (проигнорирован)

$

Сигнал KILL не может быть проигнорирован!

Сбрасывание сигналов прерывания.После захвата или игнорирования командаtrapумолчанию.Обычно такое действие связано с завершением процесса. Это не вызовет сброса прерываний по отношению к действиям, которые были заданы раньше, чем задано игнорирование прерываеий.

Сигнал NULLпосылается процессом при нормальном завершении. Он используется для

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

Соседние файлы в папке Лабы по Linux