Man page - sigqueue(3)

Packages contains this manual

Available languages:

en fr es ja ru ro

Manual

sigqueue

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
АТРИБУТЫ
ВЕРСИИ
Отличия между библиотекой C и ядром
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

sigqueue - вставляет сигнал и данные в очередь процесса

БИБЛИОТЕКА

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

ОБЗОР

#include <signal.h>

int sigqueue(pid_t pid , int sig , const union sigval value );

Требования макроса тестирования свойств для glibc (см. feature_test_macros (7)):

sigqueue ():
_POSIX_C_SOURCE >= 199309L

ОПИСАНИЕ

Вызов sigqueue () отправляет сигнал, указанный в sig , процессу с идентификатором PID, определённом в pid . Требуются определённые права для отправки сигнала, такие же как для kill (2). Как и в случае с kill (2), пустой сигнал (0) может использоваться для проверки того, что заданный PID вообще существует.

Аргумент value используется для указания сопутствующего элемента данных (либо целого, либо указателя), отправляемых сигналу, и имеет следующий тип:

union sigval {
int sival_int;
void *sival_ptr;
};

Если у процесса, принимающего сигнал, установлен обработчик посредством sigaction (2) с флагом SA_SIGINFO , то он может получить данные через поле si_value структуры siginfo_t , передаваемой как второй аргумент для обработчика. Кроме этого, значение поля si_code этой структуры будет установлено в SI_QUEUE .

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

При успешном выполнении sigqueue () возвращается 0, что означает, что сигнал попал в очередь принимающего процесса. При ошибке возвращается -1 и в errno содержится код ошибки.

ОШИБКИ

EAGAIN

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

EINVAL

Значение sig некорректно.

EPERM

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

ESRCH

Нет процесса с идентификатором PID, соответствующем указанному pid .

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes (7).

Image grohtml-613288-1.png

ВЕРСИИ

Отличия между библиотекой C и ядром

В Linux sigqueue () реализована через системный вызов rt_sigqueueinfo (2). Данный системный вызов отличается от неё третьим аргументом: структура siginfo_t , которая будет предоставляться обработчику сигнала принимающего процесса или возвращаться вызовом sigtimedwait (2) из принимающего процесса. В обёрточной функции glibc sigqueue () этот аргумент, uinfo , инициализируется следующим образом:

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() */

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

Linux 2.2. POSIX.1-2001.

ПРИМЕЧАНИЯ

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

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

kill (2), rt_sigqueueinfo (2), sigaction (2), signal (2), pthread_sigqueue (3), sigwait (3), signal (7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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