| 
 
 
 
 
 ИМЯrt_sigqueueinfo, rt_tgsigqueueinfo - ставит сигнал и данные в очередь
 
 
 
 
 ОБЗОРint rt_sigqueueinfo(pid_t tgid, int sig, siginfo_t *uinfo);
 
 int rt_tgsigqueueinfo(pid_t tgid, pid_t tid, int sig,
 siginfo_t *uinfo);
 
 Замечание: В glibc нет обёрточных функций для этих системных вызовов; смотрите
 ЗАМЕЧАНИЯ.
 
 
 
 
 ОПИСАНИЕСистемные вызовы rt_sigqueueinfo() и rt_tgsigqueueinfo() предоставляют
 низкоуровневый интерфейс для отправки сигнала с данными процессу или нити.
 Приёмник сигнала может получить сопутствующие данные, установив обработчик сигнала
 с помощью sigaction(2) с флагом SA_SIGINFO.
 
 Данные системные вызовы не предназначены для использования непосредственно из
 приложения; они нужны для реализации библиотечных функций sigqueue(3) и
 pthread_sigqueue(3).
 
 Системный вызов rt_sigqueueinfo() отправляет сигнал sig группе нитей с
 идентификатором tgid (термин «группа нитей» является синонимом «процесс», а tid
 соответствует обычному идентификатору процесса UNIX). Сигнал будет доставлен
 произвольному члену группы нитей (т. е., одной из нитей, которая в этот момент не
 блокирует сигнал).
 
 В аргументе uinfo задаются сопутствующие сигналу данные. Этот аргумент является
 указателем на структуру типа siginfo_t, описанную в sigaction(2) (и определённую в
 <sigaction.h>). Вызывающий должен заполнить следующие поля структуры:
 
 si_code
 Значением должен быть один из кодов SI_*, перечисленных в файле исходного
 кода ядра Linux include/asm-generic/siginfo.h, имеющих отрицательное
 значение (т. е., нельзя указать SI_USER, используемый ядром для обозначения
 того, что сигнал послан kill(2)) и нельзя указать (начиная с Linux 2.6.39)
 SI_TKILL (используется ядром для обозначения того, что сигнал послан
 tgkill(2)).
 
 si_pid Должно хранить идентификатор процесса, обычно PID отправителя.
 
 si_uid Должно хранить идентификатор пользователя, обычно UID реального
 пользователя отправителя.
 
 si_value
 Это поле хранит пользовательские данные, сопровождающие сигнал. Подробности
 смотрите в описании последнего аргумента (union sigval) функции
 sigqueue(3).
 
 Внутри ядра полю si_signo устанавливается значение, переданное в sig, так что
 получатель сигнала может также получить его номер через это поле.
 
 Системный вызов rt_tgsigqueueinfo() похож на rt_sigqueueinfo(), но посылает сигнал
 и данные одной нити, указываемой комбинацией tgid — идентификатором группы нитей —
 и tid — нити из этой группы.
 
 
 EPERM Вызывающий не имеет прав для отправки сигнала по назначению. Требуемые
 права смотрите в kill(2). Или некорректное значение uinfo->si_code.
 
 ESRCH rt_sigqueueinfo(): Группа нитей tgid не найдена.
 
 rt_tgsigqueinfo(): Нить tid из tgid не найдена.
 
 
 
 
 ВЕРСИИСистемный вызов rt_sigqueueinfo() был добавлен в Linux версии 2.2. Системный вызов
 rt_tgsigqueueinfo() был добавлен в Linux версии 2.6.31.
 
 
 
 
 СООТВЕТСТВИЕ СТАНДАРТАМДанные системные вызовы есть только в Linux.
 
 
 
 
 ЗАМЕЧАНИЯПоскольку системные вызовы не предназначены для приложений, в glibc для них нет
 обёрточных функций. Используйте syscall(2) в том маловероятном случае, если вы
 хотите вызывать их напрямую.
 
 Как и в случае с kill(2), может быть использован сигнал null (0), чтобы проверить,
 существует ли указанный процесс или нить.
 
 
 
 
 СМОТРИТЕ ТАКЖЕkill(2), sigaction(2), sigprocmask(2), tgkill(2), pthread_sigqueue(3),
 sigqueue(3), signal(7)
 
 
 
 
 |