26.3.2. Захват сигнала и выполнение действий
26.3.2. Захват сигнала и выполнение действий
Наиболее часто выполняемым действием является удаление временных файлов.
В следующем сценарии с помощью команд df и ps непрерывно добавляется информация во временные файлы HOLD1.$$ и HOLD2.$$. Не забывайте, что символы $$ заменяют ID процесса. Когда пользователь нажимает комбинацию клавиш [Ctrl+C], эти файлы удаляются.
$ pg trap2
#!/bin/sh
# trap2
# перехват только сигнала 2….<CTRL?C>
trap "my_exit" 2
HOLD1=/tmp/HOLD1.$$
HOLD2=/tmp/HOLD2.$$
my_exit {)
{
# my_exit
echo "<CTRL?C> detected..Now cleaning up..wait"
# удаление временных файлов
rm /tmp/*.$$ 2>/dev/null
exit 1
}
echo "processing…."
# основной цикл
while :
do
df >> $HOLD1
ps xa >>$HOLD2
done
Результаты выполнении этого сценария будут следующими:
$ trap2
processing….
<CTRL-C> detected..Now cleaning up..wait
При получении сигнала можно предоставлять пользователю определенный выбор. Однако если получены сигналы 2 или 3, следует убедиться, что они не появились случайно. Необходимо предусмотреть поток ошибок, благодаря чему выявляется ошибочное нажатие клавиш [Ctrl+C].
В следующем примере пользователю предоставляется возможность решить, следует ли выйти из сценария после получения сигнала 2. Отображается запрос о том, действительно ли пользователь желает завершить работу. Для уточнения предпринимаемого действия применяется конструкция case.
Если пользователь желает выйти из сценария, он выбирает 1, в результате чего после отображения статуса "exit 1" запускается процесс очистки. Если пользователь не желает выходить из сценария, никакие действия не производятся; зададим, что при выполнении конструкции case результаты выбора будут неудачными и произойдет возврат к исходному коду. Конечно, при подтверждении должны захватываться значения всех пустых полей.
Далее приводится функция, которая при получении сигнала предоставляет пользователю возможность выбора.
my_exit () {
# my_exit
echo -e " Received interrupt …"
echo "Do you really wish to exit ???"
echo " 1: Yes" echo " 2: No"
echo -n " Your choice [1..2] >"
read ANS
case $ANS in
1) # удаление временных файлов.. и т. д…
exit 1
;;
# не выполняет ничего
;; esac
}
Соответствующий сценарий выглядит так:
$ pg trap4
#!/bin/sh
#trap4
#перехват сигналов 1 2 3 и 15
trap "my_exit" 1 2 3 15
LOOP=0
# временные файлы
HOLD1=/tmp/HOLD1.$$
HOLD2=/tmp/HOLD2.$$
my_exit() {
# функция my_exit
echo -e " Recieved interrupt…"
echo "Do you wish to really exit ???"
echo " Y: Yes"
echo " N: No"
echo -n " Your choice [Y..N] >"
read ANS
case $ANS in
Y|y) exit 1;; # выход из сценария
N|n) ;; # возврат к обычной обработке
esac
}
# цикл while применяется здесь, например, для просмотра полей
echo -n "Enter your name :"
read NAME
echo -n "Enter your age :"
read AGE
Если при выполнении этого сценария происходит нажатие клавиш [Ctrl+C] в середине поля ввода (сразу после начала ввода имени), то пользователю предоставляется выбор: возвратиться к обычной обработке или выйти из сценария.
$ trap4
Enter your name :David Та
Received interrupt…
Do you really wish to exit ???
1: Yes
2: No
Your choice [1. .2] >2
Enter your age :
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Традиционная обработка сигнала
Традиционная обработка сигнала В этой части изложения мы рассмотрим традиционные модели перехвата сигналов и установки для них собственных обработчиков (в том числе и игнорирование или восстановление стандартной обработки по умолчанию). Термин «традиционный» здесь
12.1.1. Жизненный цикл сигнала
12.1.1. Жизненный цикл сигнала Сигналы имеют четко определенный жизненный цикл: они создаются, сохраняются до тех пор, пока ядро не выполнит определенное действие на основе сигнала, а затем вызывают совершение этого действия. Создание сигнала называют по-разному: поднятие
12.7.1. Получение контекста сигнала
12.7.1. Получение контекста сигнала Информация о том, как и почему был сгенерирован сигнал, называется контекстом[68] сигнала. Приложения, которые должны видеть этот контекст, используют обработчики сигналов, отличающиеся от нормальных. Они включают два дополнительных
20.2. Выдача звукового сигнала
20.2. Выдача звукового сигнала Заставить консоль генерировать звуковой сигнал в течение определенного периода времени на указанной частоте совсем не сложное дело. Для этого существуют два способа. Первый состоит во включении или отключении постоянной тональной посылки.
if - Выполнение или не выполнение предложений в зависимости от условий
if - Выполнение или не выполнение предложений в зависимости от условий ifПозволяет выполнить или не выполняет определенные предложения в зависимости от заданного условияСинтаксис:if (condition) { statements}Аргументы:В целом, предложение if завершается закрывающей фигурной скобкой
Отправление сигнала
Отправление сигнала Ядро генерирует и отправляет процессу сигнал в ответ на ряд событий, которые могут быть вызваны самим процессом, другим процессом, прерыванием или какими-либо внешними событиями. Можно выделить основные причины отправки сигнала: Особые
Доставка и обработка сигнала
Доставка и обработка сигнала Для каждого сигнала в системе определена обработка по умолчанию, которую выполняет ядро, если процесс не указал другого действия. В общем случае существуют пять возможных действий: завершить выполнение процесса (с созданием образа core и без),
5.9. Обработка сигнала SIGCHLD
5.9. Обработка сигнала SIGCHLD Назначение состояния зомби — сохранить информацию о дочернем процессе, чтобы родительский процесс мог ее впоследствии получить. Эта информация включает идентификатор дочернего процесса, статус завершения и данные об использовании ресурсов
Захват
Захват В этом подразделе приводится перечень действий, выполняемых при захвате из цифрового источника. Предполагается, что вы уже перевели Pinnacle Studio в режим Захват, выбрали жесткий диск для захваченного видео, в качестве источника задали DV-камеру или подобное устройство,
Аналоговый захват
Аналоговый захват Кроме захвата цифрового видео Studio можно использовать также для захвата видео из аналоговых источников при наличии, естественно, соответствующего оборудования. В качестве источников видео (и звука) при аналоговом захвате выступают следующие
Захват
Захват Перед тем как приступать непосредственно к захвату, убедитесь, что аналоговый выход источника подключен к устройству захвата, включено питание, а также выполнены следующие настройки:• в качестве источника видео задано устройство захвата;• выбран формат захвата;
26.2.2. Обнаружение сигнала
26.2.2. Обнаружение сигнала Некоторые сигналы можно захватить и выполнить соответствующие действия. Другие сигналы нельзя уловить. Например, если команда получает сигнал 9, пользователю не нужно предпринимать какие?либо действия.Если ограничиться написанием сценариев,
26.3.1. Перехват сигналов и выполнение действий
26.3.1. Перехват сигналов и выполнение действий А теперь создадим сценарий, выполняющий подсчет итераций до тех пор, пока пользователь не нажмет комбинацию клавиш [Ctrl+C] (сигнал 2). После этого сценарий отобразит сообщение, содержащее номер текущей итерации цикла.В этом
Захват изображения
Захват изображения Функция Захват изображения позволяет пользователю вставить на слайды презентации любые снимки экрана. Есть возможность вставить все содержимое экрана, снимок активного окна или фрагмент произвольной формы.Данная функция может быть полезна в
Конвертеры сигнала
Конвертеры сигнала Рассмотрим второй, очень важный компонент системы спутникового телевидения – конвертер сигнала. Конвертер представляет собой небольшой электронный блок, находящийся в фокусе спутниковой антенны. Он собирает сигнал, отраженный от зеркала тарелки,