Системный вызов kill()
Описание системного вызова
Системный вызов kill 0 предназначен для передачи сигнала одному или нескольким специфицированным процессам в рамках полномочий пользователя.
Послать сигнал (не имея полномочий суперпользователя) можно только процессу, у которого эффективный идентификатор пользователя совпадает с эффективным идентификатором пользователя для процесса, посылающего сигнал.
Аргумент pid описывает, кому посылается сигнал, а аргумент sig - какой сигнал посылается. Этот системный вызов умеет делать много разных вещей, в зависимости от значения аргументов:
• Если pid > 0 и sig > 0, то сигнал номером sig (если позволяют привилегии) посылается процессу с идентификатором pid.
• Если pid = 0, a sig > 0, то сигнал с номером sig посылается всем процессам в группе, к которой принадлежит посылающий процесс.
• Если pid = -1, sig > 0 и посылающий процесс не является процессом суперпользователя, то сигнал посылается кем процессам в системе, для которых идентификатор пользователя совпадает с эффективным идентификатором пользователя процесса, посылающего сигнал.
• Если pid = -1, sig > 0 и посылающий процесс является процессом суперпользователя, то сигнал посылается всем процессам в системе, за исключением системных процессов (обычно всем, кроме процессов с pid = 0 и pid = 1).
Изучение особенностей получения терминальных сигналов текущей и фоновой группой процессов
Возьмем тривиальную программу 12-13-1.с, в которой процесс порождает ребенка, и они оба зацикливаются, и на ее основе проиллюстрируем сказанное выше:
Для этого будем использовать команду ps с опциями -е и j, которая позволяет получить информацию обо всех процессах в системе и узнать их идентификаторы, идентификаторы групп процессов и сеансов, управляющий терминал сеанса и к какой группе процессов он приписан. Набрав команду "ps -е j " (обратите внимание на наличие пробела между буквами е и jü!) мы получим список всех процессов в системе.
Колонка P1D содержит идентификаторы процессов, колонка PGID — идентификаторы групп, к которым они принадлежат, колонка SID — идентификаторы сеансов, колонка TTY — номер соответствующего управляющего терминала, колонка TPGID (может присутствовать не во всех версиях UNIX, но в Linux она есть) — к какой группе процессов приписан управляющий терминал.Наберите тривиальную программу, откомпилируйте ее и запустите на исполнение (лучше всего из-под оболочки Midnight Commander — тс). Запустив команду "ps -е j " с другого экрана, проанализируйте значения
идентификаторов группы процессов, сеансов, прикрепления управляющего терминала, текущей и фоновой групп. Убедитесь, что тривиальные процессы относятся к текущей группе сеанса. Проверьте реакцию текущей группы на сигналы SIGINT — нажатие клавиш и — и SIGQUIT — нажатие клавиш и .
Запустите теперь тривиальную программу в фоновом режиме, например командой "a.out Проанализируйте значения идентификаторов группы процессов, сеансов, прикрепления управляющего терминала, текущей и фоновой групп. Убедитесь, что тривиальные процессы относятся к фоновой группе сеанса. Проверьте реакцию фоновой группы на сигналы SIGINT — нажатие клавиш и , и SIGQUIT - нажатие клавиш и . Ликвидируйте тривиальные процессы с помощью команды kill.
Еще по теме Системный вызов kill():
- I. 1. СИСТЕМНЫЙ ПОДХОД КАК ИНСТРУМЕНТ ДЛЯ ПОСТРОЕНИЯ СИСТЕМНЫХ ОПИСАНИЙ
- I. СИСТЕМНЫЕ ОПИСАНИЯ - ГЛАВНЫЙ РЕЗУЛЬТАТ СИСТЕМНОГО ПОДХОДА В ПСИХОЛОГИИ
- Психология личности целостна, системна (принцип целостности, системности).
- ВЫЗОВ ВРАЧА
- СПТ откликается на вызов обстоятельств
- Быстрый вызов желаемого
- Бросьте себе вызов
- Самоубийство как вызов обществу
- § 14 Условное соглашение. – Предложение и вызов. – Договор посредством публичного торга или состязания. – Одностороннее обещание.
- § 46 Принятие наследства. – Значение вызова кредиторов и некоторых публикаций. – Отзыв о принятии и действия, служащие признаком принятия.
- ПРИНЦИП СИСТЕМНОСТИ
- § 2.4. Системный подход
- принцип системности
- Тема 1. Основные принципы системного анализа
- ГОЛОВОКРУЖЕНИЕ СИСТЕМНОЕ
- 2.1.4. Системный анализ
- принцип целостности, системности