Man page - rt_sigqueueinfo(2)

Packages contains this manual

Available languages:

en fr ru ro

Manual

rt_sigqueueinfo

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

rt_sigqueueinfo, rt_tgsigqueueinfo - ставит сигнал и данные в очередь

БИБЛИОТЕКА

Стандартная библиотека языка C ( libc , -lc )

ОБЗОР

#include <linux/signal.h> /* определения констант SI_* */
#include <sys/syscall.h>
/* определения констант SYS_* */
#include <unistd.h>

int syscall(SYS_rt_sigqueueinfo, pid_t tgid ,
int
sig , siginfo_t * info );
int syscall(SYS_rt_tgsigqueueinfo, pid_t
tgid , pid_t tid ,
int
sig , siginfo_t * info );

Замечание : В glibc нет обёрточных функций для этих системных вызовов; смотрите ЗАМЕЧАНИЯ.

ОПИСАНИЕ

Системные вызовы rt_sigqueueinfo () и rt_tgsigqueueinfo () предоставляют низкоуровневый интерфейс для отправки сигнала с данными процессу или нити. Приёмник сигнала может получить сопутствующие данные, установив обработчик сигнала с помощью sigaction (2) с флагом SA_SIGINFO .

Данные системные вызовы не предназначены для использования непосредственно из приложения; они нужны для реализации библиотечных функций sigqueue (3) и pthread_sigqueue (3).

Системный вызов rt_sigqueueinfo () отправляет сигнал sig группе нитей с идентификатором tgid (термин «группа нитей» является синонимом «процесс», а tid соответствует обычному идентификатору процесса UNIX). Сигнал будет доставлен произвольному члену группы нитей (т. е., одной из нитей, которая в этот момент не блокирует сигнал).

В аргументе info задаются сопутствующие сигналу данные. Этот аргумент является указателем на структуру типа siginfo_t , описанную в sigaction (2) (и определённую в <sigaction.h> ). Вызывающий должен заполнить следующие поля структуры:
si_code

Значением должен быть один из кодов SI_* , перечисленных в файле исходного кода ядра Linux include/asm-generic/siginfo.h . посылается любому процессу, но не самому вызывающему, то накладываются следующие ограничения:

Значение кода не может быть больше или равно нулю. В частности нельзя указывать SI_USER , используемый ядром для обозначения того, что сигнал послан kill (2), и нельзя указать SI_KERNEL , который используется для обозначения того, что сигнал сгенерирован ядром.

Кодом не может быть (начиная с 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 — нити из этой группы.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении эти системные вызовы возвращают 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение ошибки.

ОШИБКИ

EAGAIN

Достигнуто ограничение на количество сигналов в очереди (подробней об этом смотрите в signal (7)).

EINVAL

Некорректное значение sig , tgid или tid .

EPERM

Вызывающий не имеет прав для отправки сигнала по назначению. Требуемые права смотрите в kill (2).

EPERM

В tgid указан процесс, отличный от вызывающего и значение info->si_code некорректно.

ESRCH

rt_sigqueueinfo (): Группа нитей tgid не найдена.

rt_tgsigqueinfo (): Нить tid из tgid не найдена.

СТАНДАРТЫ

Linux.

ИСТОРИЯ

rt_sigqueueinfo ()

Linux 2.2.

rt_tgsigqueueinfo ()

Linux 2.6.31.

ПРИМЕЧАНИЯ

Поскольку системные вызовы не предназначены для приложений, в glibc для них нет обёрточных функций. Используйте syscall (2) в том маловероятном случае, если вы хотите вызывать их напрямую.

Как и в случае с kill (2), может быть использован сигнал null (0), чтобы проверить, существует ли указанный процесс или нить.

СМОТРИТЕ ТАКЖЕ

kill (2), pidfd_send_signal (2), sigaction (2), sigprocmask (2), tgkill (2), pthread_sigqueue (3), sigqueue (3), signal (7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) aereiae <aereiae@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Lockal <lockalsash@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Баринов Владимир, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .