русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Сигналы


Дата добавления: 2015-07-09; просмотров: 635; Нарушение авторских прав


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

Список сигналов, используемых в системе, можно получить с помощью команды kill -l, а их подробное описание доступно с помощью man 7 signal.

Наиболее часто используются сигналы, приведенные в списке далее:

r 1 — HUP, разрыв связи с терминалом (Hang Up — положить трубку). Мно- гие демоны используют этот сигнал, как команду перечитать их конфигу- рационный файл и продолжить работу с измененными настройками. Обо- лочка Bash реагирует на этот сигнал завершением сеанса;

r 2 — INT, прерывание процесса. Генерируется при нажатии комбинации клавиш <Ctrl>+<C>;

r 3 — QUIT, сброс процесса. Генерируется при нажатии комбинации клавиш

<Ctrl>+<\>;

r 15 — TERM, сигнал для корректного завершения процесса. Этот сигнал ко- манда kill посылает по умолчанию;

r 9 — KILL, аварийное завершение процесса.

Каким образом то или иное приложение реагирует на получение некоторого сигнала, зависит от того, как эта программа написана. В программе получе- ние сигнала может перехватываться и обрабатываться специальным образом.

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


 

Если необходимо послать сигнал некоторым процессам, то сначала требуется узнать PID этих процессов, а затем с помощью команды kill послать им тре- буемый сигнал, номер которого указывается после тире. Если номер сигнала или его имя не задано после дефиса, то команда kill посылает целевым про- цессам сигнал 15 (TERM). Так, например, можно попытаться послать сигнал оболочке bash (пример 5.20).



 

Пример 5.20. Реакция процессов на сигналы

 

$ ps

PID TTY TIME CMD

2179 pts/0 00:00:00 bash

2180 pts/0 00:00:00 ps

$ kill 2179

$ kill -2 2179

$ kill -1 2179 login:

 

Пример 5.20 демонстрирует, что оболочка bash игнорирует сигнал 15 (TERM), сигнал 2 (INT) очищает командную строку, а получив сигнал 1 (HUP), оболоч- ка завершает работу и выходит из сеанса.

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

Удобно пользоваться командами pkill и killall. Они действуют подобно команде kill, позволяя, как и kill, послать требуемый сигнал нескольким заданным процессам. В отличие от команды kill, для команд pkill и killall достаточно указать имя командной строки процесса.

Например, следующая команда приведет к немедленному аварийному оста- нову всех копий демона httpd (пример 5.21).

 

Пример 5.21. Команда killall

 

# killall -9 httpd


 

В результате передачи сигнала 9 (KILL) всем процессам httpd они будут сня- ты с исполнения, т. к. перехватить такой сигнал невозможно.

 



<== предыдущая лекция | следующая лекция ==>
Мониторинг процессов | Перехват и обработка сигналов в Bash


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.007 сек.