Что происходит, если вызов `kill` вызывает генерацию сигнала для вызывающего процесса и сигнал не блокируется?
Среда расширенного программирования Unix говорит:
#include <signal.h> int kill(pid_t pid, int signo);
...
Если звонок
kill
вызывает генерацию сигнала для вызывающего процесса и, если сигнал не заблокирован, либоsigno
или какой-либо другой ожидающий, неблокированный сигнал доставляется процессу до того, как kill завершится. (Дополнительные условия возникают с потоками; см. Раздел 12.8 для получения дополнительной информации.)
У меня есть некоторые проблемы с пониманием вышеупомянутого пункта.
Что означает описание дела
"призыв к
kill
вызывает генерацию сигнала для вызывающего процесса ""сигнал не заблокирован"?
Что означает результат?
Может ли кто-нибудь перефразировать и / или привести пример?
Благодарю.
2 ответа
Все это говорит о том, что если процесс использует kill
чтобы послать сигнал самому себе, тогда этот сигнал будет доставлен раньше kill
возвращается. С некоторыми оговорками.
Одно из применений kill - послать сигнал s программе, сообщающей, что программа завершается - откуда и происходит название. Однако в настоящее время есть несколько других сигналов, которые вы можете отправить программе.
По сути, когда одна программа вызывает kill с помощью pid (идентификатора процесса) другой программы, она говорит ядру передать этот сигнал другой программе.
Это не всегда означает, что сигнал будет отправлен другой программе. Вместо этого, если программа, вызывающая kill, запускается с пользователем, отличным от того, который программа принесла, то ядро не пропустит сигнал и заблокирует его.