Provided by: manpages-cs_0.18.20090209-3_all bug

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/