Отправка (генерация) сигнала

#include <signal.h>

#include <sys/types.h>

int kill(pid_t pid, int signo);

отправляет сигнал signo

pid >0 Отправляется процессу с этим pid
  То сигнал отправляется всем процессам, принадлежащим той же группе что и вызывающий процесс.
-1 Сигнал отправляется всем процессам, для которых у вызывающего процесса есть разрешение на отправку сигнала.
<-1 Сигнал отправляется группе процессов, id которых равно |pid|

Пользователь может отправить сигнал тому процессу, владельцем которого он является.

При успешном завершении kill возвращает 0 (успех - отправка хотя бы одного сигнала), а в случае ошибки возвращается -1, и устанавливается код ошибки

EINVAL Недопустимый сигнал.

EPERM Недостаточно полномочий для отправки сигнала

ESRCH Елси указанный процесс/группа процессов не существует.


Наборы сигналов

Понимается некоторое множество сигналов, к которым оперирует процесс. Есть действия системные вызовы которые позволяют наборы сигналов, и проверять наличие какого-то сигнала в наборе сигналов. Для определения набора сигналов есть специальный тип: sigset_t

#include <signal.h>

int sigemptyset(sigset_t *set);//инициализирует набор сигналов, и помечает его как пустой. Возвращает 0

int sigfillset(sigset_t *set); //инициализирует набор сигналов, и помечает кго как полный(все присутствуют). Возвращает 0

int sigaddset(sigset_t *set, int signo);//добавить сигнал в набор

int sigdelset(sigset_t *set, int signo);//удалить сигнал из набора. Возвращает 0 – успешно. -1 если ошибка.

int sigismember(const sigset_t *set, int signo) 1 – если проверяемый сигнал находится в наборе. 0 если сигнал отсутствует в наборе. -1 при ошибке.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: