Man sigqueue (3) вставляє сигнал і дані в чергу процесу

int sigqueue (pid_tpid, intsig, const union sigvalvalue);

Вимоги макросу тестування властивостей для glibc (див. Feature_test_macros (7)):

Виклик sigqueue () відправляє сигнал, зазначений в sig. процесу з ідентифікатором PID, визначеному в pid. Потрібні певні права для відправки сигналу, такі ж як для kill (2). Як і у випадку з kill (2), порожній сигнал (0) може використовуватися для перевірки того, що заданий PID взагалі існує.

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

Якщо у процесу, що приймає сигнал, встановлений обробник за допомогою 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.

Функція sigqueue () і використовуваний їй системний виклик rt_sigqueueinfo () вперше з'явилися в Linux 2.2.

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

Схожі статті