Provided by:
manpages-cs_0.18.20090209-1_all 
JMÉNO
sigaction, sigprocmask, sigpending, sigsuspend - Funkce POSIXu pro
práci se signály.
SYNTAXE
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction
*oldact);
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
int sigpending(sigset_t *set);
int sigsuspend(const sigset_t *mask);
POPIS
Systémovým voláním sigaction se určuje, jakou akci má proces provést
při obdržení určitého signálu.
Parametrem signum je určen signál a lze zadat kterýkoli platný signál
kromě SIGKILL a SIGSTOP.
Je-li hodnota act nenulová, je pro signál signum nainstalována akce
act. Je-li hodnota oldact nenulová, předchozí akce je uložena do
oldact.
Struktura sigaction je definována jako
struct sigaction {
void (*sa_handler)(int);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
}
sa_handler určuje akci, která má být přiřazena signálu signum a může
obsahovat SIG_DFL pro implicitní akci, SIG_IGN pro ignorování signálu,
nebo ukazatel na funkci ošetřující signál.
sa_mask je maska signálů, které mají být zablokovány při obsluze
signálu. Navíc je zablokován signál, který vyvolal akci, nejsou-li
nastaveny příznaky SA_NODEFER nebo SA_NOMASK .
sa_flags je množina příznaků, které ovlivňují obsluhu signálu. Je to
logický součet následujících bitových konstant:
SA_NOCLDSTOP
Je-li signum SIGCHLD, negeneruje se signál při zastavení
dětského procesu (tj. dostane-li tento proces signál
SIGSTOP, SIGTSTP, SIGTTIN nebo SIGTTOU).
SA_ONESHOT nebo SA_RESETHAND
Poté, co je zavolána obslužná funkce, se obsluha signálu
vrací do implicitního stavu. (Takto se normálně chová
systémové volání signal(2) .)
SA_RESTART
Nastaví kompatibilní chování s BSD: určitá systémová
volání pak jsou po zpracování signálu restartována.
SA_NOMASK neboli SA_NODEFER
Umožní příchod dalšího signálu během jeho vlastní
obslužné funkce.
Pole sa_restorer je neaktuální a nemělo by být používáno.
Systémovým voláním sigprocmask lze měnit seznam momentálně blokovaných
signálů. Záleží na parametru how, jaká změna nastane:
SIG_BLOCK
Nový seznam blokovaných signálů bude obsahovat dosud
blokované signály a signály v parametru set .
SIG_UNBLOCK
Signály v parametru set jsou odstraněny ze seznamu
blokovaných signálů. Je přípustné uvést v parametru set
signál, který není blokován.
SIG_SETMASK
Seznam blokovaných signálů je nastaven na set.
Je-li hodnota parametru oldset nenulová, je předchozí seznam
blokovaných signálů uložen do oldset.
Systémové volání sigpending dovoluje zjistit nevyřízené signály (které
přišly při zablokování). Maska nevyřízených signálů je uložena do
parametru set.
Volání sigsuspend přechodně nahradí masku signálů maskou zadanou v
parametru mask a poté pozdrží provádění procesu do obdržení signálu.
NÁVRATOVÉ HODNOTY
Funkce sigaction, sigprocmask, sigpending a sigsuspend vrací 0 při
úspěšném provedení a -1 při chybě.
CHYBOVÉ HODNOTY
EINVAL Byl zadán neplatný signál. Tato chyba je také generována při
pokusu změnit obsluhu signálů SIGKILL nebo SIGSTOP, které
nemohou být zachyceny.
EFAULT act, oldact, set nebo oldset ukazují do oblasti paměti, která
nepatří do adresního prostoru procesu.
EINTR Systémové volání bylo přerušeno.
POZNÁMKY
Signály SIGKILL or SIGSTOP nelze blokovat voláním sigprocmask. Pokusy o
to budou v tichosti ignorovány.
Podle normy POSIX není definováno chování procesu poté, co ignoruje
signál SIGFPE, SIGILL, nebo SIGSEGV, který nebyl generován funkcemi
kill() nebo raise(). Celočíselné dělení nulou dává nedefinovaný
výsledek a na některých architekturách generuje signál SIGFPE.
Ignorování tohoto signálu může způsobit zacyklení procesu.
Nastavení akce pro signál SIGCHLD na SIG_IGN způsobí automatický zánik
dětských procesů po jejich ukončení.
Norma POSIX definuje pouze příznak SA_NOCLDSTOP. Používání jiných
příznaků v sa_flags je nepřenositelné.
Příznak SA_RESETHAND je kompatibilní se stejnojmenným příznakem v
systémech SVr4.
Příznak SA_NODEFER je kompatibilní se stejnojmenným příznakem v SVr4 ve
verzích jádra 1.3.9 a vyšších. Ve starších verzích jádra linuxová
implementace dovolovala přijetí libovolného signálu, nejen toho který
byl instalován (což způsobovalo ignorování nastavení sa_mask ).
Jména SA_RESETHAND and SA_NODEFER jsou určena pro kompatibilitu se SVr4
a byla zavedena ve verzi knihovny libc 3.0.9.
Pro zjištění momentálního stavu obsluhy signálů lze volat funkci
sigaction s parametrem act rovným nule. Zadáte-li nulové parametry act
a oldact, lze ji použít ke kontrole, je-li daný signál na tom kterém
systému použitelný.
Pro podrobnosti o manipulaci se skupinami signálů viz sigsetops(3)
SPLŇUJE STANDARDY
POSIX, SVr4. Dokumentace SVr4 se nezmiňuje o chybové hodnotě EINTR.
DALŠÍ INFORMACE
kill(1), kill(2), killpg(2), pause(2), raise(3), siginterrupt(3),
signal(2), signal(7), sigsetops(3), sigvec(2)
VAROVÁNÍ
Překlad je pravděpodobně zastaralý. Pokud chcete pomoci s jeho
aktualizací, zamiřte na http://man-pages-cs-wiki.homelinux.net/