tkill, tgkill - посылает
сигнал
нити
Standard C library (
libc,
-lc)
#include <signal.h> /* определения констант SIG* */
#include <sys/syscall.h> /* определения констант SYS_* */
#include <unistd.h>
[[deprecated]] int syscall(SYS_tkill, pid_t tid, int sig);
#include <signal.h>
int tgkill(pid_t tgid, pid_t tid, int sig);
Note: glibc provides no wrapper for
tkill(), necessitating the use
of
syscall(2).
tgkill()
отправляет
сигнал
sig
нити с ID
tid в
группе
нитей
tgid. Для
сравнения,
kill(2) может
быть
использована
только для
отправки
сигнала
процессу
(т.е., группе
нитей) как
единому
целому и
сигнал
будет
доставлен
произвольной
нити
внутри
этого
процесса.
Вызов
tkill() —
устаревший
предшественник
tgkill(). Он
позволяет
задавать
только
идентификатор
нити-получателя,
что может
привести к
уведомлению
не той нити,
если нить
завершила
работу и её
идентификатор
используется
повторно.
Не
используйте
данный
системный
вызов.
Это вызовы
интерфейса
системного
уровня, они
предназначены
для
внутреннего
использования
в
библиотеке
нитей.
On success, zero is returned. On error, -1 is returned, and
errno is set
to indicate the error.
- EAGAIN
- Достигнут
ограничитель
ресурса
RLIMIT_SIGPENDING и sig
содержит
сигнал
реального
времени.
- EAGAIN
- Недостаточное
количество
памяти
ядра и sig
содержит
сигнал
реального
времени.
- EINVAL
- Указан
некорректный
идентификатор
нити,
группы или
сигнал.
- EPERM
- Отказано
в доступе.
См. kill(2) для
получения
подробностей
о
необходимом
доступе.
- ESRCH
- Не
существует
процесса с
указанным
идентификатором
нити (и
идентификатором
группы).
tkill()
поддерживается
начиная с Linux
2.4.19/2.5.4.
tgkill() был
добавлен в
Linux 2.5.75.
Library support for
tgkill() was added in glibc 2.30.
Вызовы
tkill() и
tgkill() есть
только в Linux, и
они не
должны
использоваться
в
переносимых
программах.
См.
описание
CLONE_THREAD в
clone(2) для
пояснения
по поводу
групп
нитей.
Before glibc 2.30, there was also no wrapper function for
tgkill().
clone(2),
gettid(2),
kill(2),
rt_sigqueueinfo(2)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]