.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 2002 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" added note on self-signaling, aeb, 2002-06-07 .\" added note on CAP_KILL, mtk, 2004-06-16 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sigqueue 3 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ sigqueue \- вставляет сигнал и данные в очередь процесса .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint sigqueue(pid_t \fP\fIpid\fP\fB, int \fP\fIsig\fP\fB, const union sigval \fP\fIvalue\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBsigqueue\fP(): .nf _POSIX_C_SOURCE >= 199309L .fi .SH ОПИСАНИЕ Вызов \fBsigqueue\fP() отправляет сигнал, указанный в \fIsig\fP, процессу с идентификатором PID, определённом в \fIpid\fP. Требуются определённые права для отправки сигнала, такие же как для \fBkill\fP(2). Как и в случае с \fBkill\fP(2), пустой сигнал (0) может использоваться для проверки того, что заданный PID вообще существует. .P Аргумент \fIvalue\fP используется для указания сопутствующего элемента данных (либо целого, либо указателя), отправляемых сигналу, и имеет следующий тип: .P .in +4n .EX union sigval { int sival_int; void *sival_ptr; }; .EE .in .P Если у процесса, принимающего сигнал, установлен обработчик посредством \fBsigaction\fP(2) с флагом \fBSA_SIGINFO\fP, то он может получить данные через поле \fIsi_value\fP структуры \fIsiginfo_t\fP, передаваемой как второй аргумент для обработчика. Кроме этого, значение поля \fIsi_code\fP этой структуры будет установлено в \fBSI_QUEUE\fP. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении \fBsigqueue\fP() возвращается 0, что означает, что сигнал попал в очередь принимающего процесса. При ошибке возвращается \-1 и в \fIerrno\fP содержится код ошибки. .SH ОШИБКИ .TP \fBEAGAIN\fP Достигнуто ограничение на количество сигналов в очереди (подробней об этом смотрите в \fBsignal\fP(7)). .TP \fBEINVAL\fP Значение \fIsig\fP некорректно. .TP \fBEPERM\fP Процесс не имеет прав для отправки сигнала принимающему процессу. Требуемые права смотрите в \fBkill\fP(2). .TP \fBESRCH\fP Нет процесса с идентификатором PID, соответствующем указанному \fIpid\fP. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBsigqueue\fP() T} Безвредность в нитях MT\-Safe .TE .SH ВЕРСИИ .SS "Отличия между библиотекой C и ядром" В Linux \fBsigqueue\fP() реализована через системный вызов \fBrt_sigqueueinfo\fP(2). Данный системный вызов отличается от неё третьим аргументом: структура \fIsiginfo_t\fP, которая будет предоставляться обработчику сигнала принимающего процесса или возвращаться вызовом \fBsigtimedwait\fP(2) из принимающего процесса. В обёрточной функции glibc \fBsigqueue\fP() этот аргумент, \fIuinfo\fP, инициализируется следующим образом: .P .in +4n .EX uinfo.si_signo = sig; /* аргумент, передаваемый в sigqueue() */ uinfo.si_code = SI_QUEUE; uinfo.si_pid = getpid(); /* ID процесса отправителя */ uinfo.si_uid = getuid(); /* реальный UID отправителя */ uinfo.si_value = val; /* аргумент, передаваемый в sigqueue() */ .EE .in .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ Linux 2.2. POSIX.1\-2001. .SH ЗАМЕЧАНИЯ Если этот вызов приводит к отправке сигнала процессу, который его вызвал, и этот сигнал не заблокирован вызывающей нитью, и никакие другие нити не желают обрабатывать сигнал (либо он для них не заблокирован, либо они ожидали его с помощью \fBsigwait\fP(3), то, по меньшей мере, сигнал должен быть доставлен этой нити до завершения этого вызова. .SH "СМ. ТАКЖЕ" \fBkill\fP(2), \fBrt_sigqueueinfo\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBpthread_sigqueue\fP(3), \fBsigwait\fP(3), \fBsignal\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .