Работает ли kill () мгновенно в C? Или есть шанс, что следующая строка будет работать? - PullRequest
1 голос
/ 05 мая 2020

Если подумать, я предполагаю, что сигнал отправлен в ОС, и программа продолжится, даже если сигнал все еще ожидает обработки на стороне ОС. Может кто-нибудь подтвердить?

kill(this_process, signum);
printf("will line this run in any reality of the multi-verse?");
printf("or should I go to sleep?");
sleep(10);

1 Ответ

4 голосов
/ 05 мая 2020

Из спецификации POSIX kill()

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

Итак, если нет других ожидающих сигналов для процесса, когда Вы звоните по номеру kill(), отправленный вами сигнал должен быть доставлен немедленно. Но если есть другие ожидающие сигналы, этот сигнал может быть поставлен в очередь, и более ранний сигнал будет доставлен немедленно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...