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

методописание

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).

Last updated