Управление на сигнали

метод описание
sigemptyset() инициализира празно множество от сигнали, като всички сигнали са изключени от множеството.
sigfillset() инициализира пълно множество от сигнали, включващо всичките сигнали.
sigaddset() добавя сигнал към множество.
sigdelset() премахва сигнал от множество.
sigprocmask() извлича и/или променя сигналната маска на извикващата нишка.
sigaction() променя действието на сигнала.
sigwait() чака сигнал.
strsignal() връща низ описващ сигнала.
#include <signal.h>

int sigemptyset (sigget_t *set);
int sigaddset (sigset_t *set, int signo);
int sigprocmask (int how, cont sigset_t *set, sigset_t *oldset);

int sigaction (int signo, const struct sigaction *act, struct sigaction *oldact);

struct sigaction {
  void (*sa_handler)(int);
  void (*sa_sigaction)(int, siginfo_t *, void *);
  sigset_t sa_mark;
  int sa_flags;
  void (*sa_restorer)(void);
};

sigemptyset() инициализира наборът от сигнали, зададен от комплекта, като го маркира празен (всички сигнали са изключени от комплекта).

sigaddset() добавя сигнал към комплекта от сигнали, зададен от комплекта, докато sigdelset() премахва знака от набора от сигнали, зададен от комплекта. И двете връщат 0 при успех, или -1 при грешка, в който случай грешката е настроена на код за грешка EINVAL, което означава, че знакът е невалиден идентификатор на сигнала.

Поведението на sigprocmask() зависи от стойността на едно от следните:

Поле Описание
SIG_SETMASK Задава се сигнална маска на извикващия процес.
SIG_BLOCK Сигналите се добавят към сигналната маска на извикващият процес.
SIG_UNBLOCK Сигналите се премахват от сигналната маска на извикващия процес.

Структура sigaction:

Поле Описание
SA_HANDLER Адрес на манипулатора SIG_IGN или SIG_DFL
SA_MASK Сигнали за блокиране
SA_FLAGS Допълнителни флагове, като SA_RESETHAND
SA_RESETHAND Позволява режим "еднократно". Поведението на дадения сигнал се връща към стандартното, след като обработващият сигнал се върне.

Извикването на sigaction() променя поведението на сигнала, идентифициран от signo, което може да бъде всяка стойност освен тези, свързани със SIGKILL и SIGSTOP. Ако act не е NULL, системното извикване променя текущото поведение на сигнала, както е посочено в act. Ако oldact не е NULL, системното извикване запазва предишното поведение на даден сигнал (или текущия, ако act е NULL).

results matching ""

    No results matching ""