отправка сигнала через kill и pid=0

отправка сигнала через kill и pid=0

Из убийств man:

Если pid равен 0, sig должен быть отправлен всем процессам (за исключением неопределенного набора системных процессов), идентификатор группы процессов которых равен идентификатору группы процессов отправителя и для которых процесс имеет разрешение на отправку сигнала.

Что for which the process has permission to send a signalименно означает? Как проверить, какие процессы получат сигнал?

Например, kill -9 0завершает все процессы, запущенные в текущемтелетайпителетайпсамо по себе. Или есть что-то еще?

решение1

Что for which the process has permission to send a signalименно означает?

Ответ на этот вопрос есть прямо на странице руководства:

Чтобы процесс имел разрешение на отправку сигнала, он должен быть либо привилегированным, либо реальный или эффективный идентификатор пользователя отправляющего процесса должен быть равен реальному или сохраненному установленному идентификатору пользователя целевого процесса. В случаеSIGCONTдостаточно, когда процессы отправки и получения принадлежат одному сеансу.

Как проверить, какие процессы получат сигнал?

Вы можете пройтись по списку процессов и попытаться убить каждый из них сигналом 0 (сигналом пробного запуска). Это скажет вам, было ли у вас разрешение на отправку настоящего сигнала.

Связанный контент