ОПИСАНИЕ. sigqueue() отправляет сигнал, указанный в sig процессу с идентификатором PID, определенном pid
sigqueue () отправляет сигнал, указанный в sig процессу с идентификатором PID, определенном pid. Требуются определенные права для отправки сигнала, такие же как и для kill (2). Как и в случае с kill (2), пустой сигнал (null, 0) может использоваться для проверки того, что заданный PID вообще существует. Аргумент value используется для указания сопутствующих элементов или данных (либо целых либо указателей), отправляемых сигналу, и имеет следующий тип: union sigval { int sival_int; void *sival_ptr;};Если процесс, принимающий сигнал, имеет для него обработчик, используя флаг SA_SIGINFO для sigaction (2), то он может получить данные через поле si_value структуры siginfo_t передаваемой как второй аргумент для обработчика. Далее, поле si_code этой структуры будет установлено в SI_QUEUE. ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ При нормальном завершении работы sigqueue () возвращает 0, показывая что сигнал был успешно отправлен получающему процессу. В других случаях будет возвращаться -1 и переменная errno будет установлена соответственно ошибке. НАЙДЕННЫЕ ОШИБКИ EAGAIN Достигнуто ограничение передаваемых сигналов. (см. signal (7)). EINVAL sig некорректен. ESRCH Нет процессов с идентификатором PID, соответствующем указанному pid. EPERM Процесс не имеет прав для отправки сигнала получающему процессу. (см. kill (2)).
|