Ядро Linux в комментариях

Kill_something_info


Аргументы этой функции такие же, как и для sys_kill плюс указатель на структуру struct siginfo.

Если pid равен 0, это значит, что текущий процесс желает отправить сигнал во всю свою группу процессов; это достигается обращением к kill_pg_info (строка ).

Если pid равен –1, это значит, что сигнал передается (почти) каждому процессу в системе. Как это делается— описано ниже.

Использование макроса for_each_task (определенного в строке ; см. ) для выполнения итерации по списку всех существующих процессов в системе.

Если данный процесс не является ожидающим (или процессом init), отправить сигнал с использованием send_sig_info (строка ). При каждом нахождении подходящей задачи увеличивается count, хотя функцию kill_something_info мало интересует подобный подсчет. Если попытка отправки сигнала успехом не увенчалась, запоминается состояние ошибки, таким образом, kill_something_info может вернуть соответствующий код ошибки в строке ; если имело место более одного сбоя, возвращается код ошибки только для последнего из них.

Если найден хотя бы один подходящий кандидат, kill_somcthing_info возвращает 0 в случае успеха либо код последней возникшей ошибки в случае неудачи. Если ни одного кандидата не нашлось, возвращается код ошибки ESRCH.

Отрицательные значения pid, отличные от –1, определяют группу процессов, которые должны получить сигнал; при этом модуль pid представляет собой номер группы. Как и ранее, для отправки сигнала используется kill_pg_info.

Здесь учитываются другие возможности, когда pid положительный. В данном случае передаваемое значение представляет собой PID для одиночного процесса, которому должен отправляться сигнал. Для отправки выполняется обращение к kill_proc_info (строка ).



Содержание раздела