<<
>>

Системный вызов 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.

<< | >>
Источник: В.Е. Карпов К.А. Коньков. Основы операционных систем. 2005

Еще по теме Системный вызов kill():

  1. I. 1. СИСТЕМНЫЙ ПОДХОД КАК ИНСТРУМЕНТ ДЛЯ ПОСТРОЕНИЯ СИСТЕМНЫХ ОПИСАНИЙ
  2. I. СИСТЕМНЫЕ ОПИСАНИЯ - ГЛАВНЫЙ РЕЗУЛЬТАТ СИСТЕМНОГО ПОДХОДА В ПСИХОЛОГИИ
  3. Психология личности целостна, системна (принцип целостности, системности).
  4. ВЫЗОВ ВРАЧА
  5. СПТ откликается на вызов обстоятельств
  6. Быстрый вызов желаемого
  7. Бросьте себе вызов
  8. Самоубийство как вызов обществу
  9. § 14 Условное соглашение. – Предложение и вызов. – Договор посредством публичного торга или состязания. – Одностороннее обещание.
  10. § 46 Принятие наследства. – Значение вызова кредиторов и некоторых публикаций. – Отзыв о принятии и действия, служащие признаком принятия.
  11. ПРИНЦИП СИСТЕМНОСТИ
  12. § 2.4. Системный подход
  13. принцип системности
  14. Тема 1. Основные принципы системного анализа
  15. ГОЛОВОКРУЖЕНИЕ СИСТЕМНОЕ
  16. 2.1.4. Системный анализ
  17. принцип целостности, системности