Что происходит, если вызов `kill` вызывает генерацию сигнала для вызывающего процесса и сигнал не блокируется? - PullRequest
0 голосов
/ 22 декабря 2018

Среда расширенного программирования Unix говорит:

#include <signal.h>
int kill(pid_t pid, int signo);

...

Если , вызов kill вызывает сигнал кгенерироваться для вызывающего процесса , и если сигнал не заблокирован , либо signo, либо какой-либо другой ожидающий, неблокированный сигнал доставляется процессу до того, как kill вернет .(Дополнительные условия возникают с потоками; см. Раздел 12.8 для получения дополнительной информации.)

У меня возникли некоторые проблемы с пониманием вышеприведенного абзаца.

Что означает описание случая

  • "вызов kill вызывает генерацию сигнала для вызывающего процесса"

  • "сигнал не заблокирован"?

Что означает результат?

Может ли кто-нибудь перефразировать и / или привести какой-нибудь пример?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Все это говорит о том, что если процесс использует kill для отправки сигнала себе, то этот сигнал будет доставлен до того, как kill вернется.С некоторыми оговорками.

0 голосов
/ 22 декабря 2018

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

По сути, когда одна программа вызывает kill с помощью pid (идентификатор процесса) другой программы, она сообщает ядру передать этот сигналдругая программа.

Это не всегда означает, что сигнал будет отправлен другой программе.Вместо этого, если программа, вызывающая kill, запускается с пользователем, отличным от того, который программа принесла, то ядро ​​не пропустит сигнал и вместо этого заблокирует его.

...