Бывает необходимо защитить выполнение программы от прерывания.
Наиболее часто приходится встречаться со следующими прерываниями, соответсвующими сигналам:
0 - выход из интерпретатора,
1 - отбой (отключение удаленного абонента),
2 - прерывание от ,
9 - уничтожение (не перехватывается),
15 - окончание выполнения.
Для защиты от прерываний существует команда "trap", имеющая формат:
trap 'список команд' сигналы
Например, если перед прекращением по прерываниям выполнения какого то командного файла необходимо удалить файлы в "/tmp", то это может быть выполнено командой "trap":
tarp 'rm /tmp/* ; exit 1' 1 2 15
Команда "trap" позволяет и просто игнорировать прерывания, если "список команд" пустой. Так например, если команда "cmd" выполняется очень долго, а пользователь решил отключиться от системы, то для продолжения выполнения этой команды можно написать, запустив команду в фоновом режиме:
( trap '' 1; cmd )&
* * *
Программирование на shell здесь описано достаточно полно, но далеко не исчерпывающе :-) Поэтому знакомство с литературой не только желательно, но и необходимо. Тем более, что описание даже стандартных команд (в силу очень больших об'емов) здесь отсутствует.
Список литературы содержит некоторые из (быстро растущего перечня) книг на русском языке.
При подготовке материалов по программированию на shell прежде всего использованы книги [ 9, 1, 10, 11 ].