pthread_kill - посылает
сигнал в
нить
POSIX threads library (
libpthread,
-lpthread)
#include <signal.h>
int pthread_kill(pthread_t thread, int sig);
pthread_kill():
_POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500
Функция
pthread_kill()
посылает
сигнал
sig в
thread — нить из
того же
процесса,
что и
вызвавший
функцию.
Сигнал
доставляется
thread
асинхронно.
Если
sig
равно 0, то
сигнал не
посылается,
но
выполняется
проверка
на ошибки.
При
успешном
выполнении
pthread_kill()
возвращается
0; при ошибке
возвращается
номер
ошибки и
сигнал не
посылается.
- EINVAL
- Указан
некорректный
сигнал.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
pthread_kill() |
Безвредность
в нитях |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
Область
действия
сигнала —
весь
процесс:
если
установлен
обработчик
сигнала, то
он будет
вызван в
нити
thread, но
если этот
сигнал «stop»,
«continue» или «terminate»,
то это
действие
повлияет
на весь
процесс.
Реализация
sigaction() в glibc
выдаёт
ошибку (
EINVAL)
при
попытке
послать
сигналы
реального
времени,
которые
используются
внутри
реализации
NPTL.
Подробности
смотрите в
nptl(7).
В POSIX.1-2008
рекомендуется,
что если
реализация
обнаруживает
использование
ID нити после
её срока
жизни, то
pthread_kill() должна
возвращать
ошибку
ESRCH.
Реализация
glibc
возвращает
эту ошибку
в случае,
когда
обнаруживается
некорректный
ID нити. Но
также
заметим,
что в POSIX
говорится,
что
попытка
использовать
ID нити с
завершённым
сроком
жизни
приводит к
непредсказуемому
поведению,
и попытка
использовать
некорректный
ID нити в
вызове
pthread_kill()
может
приводить,
например, к
ошибке
сегментирования.
kill(2),
sigaction(2),
sigpending(2),
pthread_self(3),
pthread_sigmask(3),
raise(3),
pthreads(7),
signal(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexey, Azamat Hackimov <
[email protected]>, kogamatranslator49
<
[email protected]>, Kogan, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]