sigaction

SIGACTION(2)            Linux - pÅÃruÄka programátora            SIGACTION(2)



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/



Linux 1.3                       18.února 1997                    SIGACTION(2)