Provided by: manpages-cs_0.17.20080113-1_all bug

JMÉNO

       signal - seznam signálů

POPIS

       V  Linuxu  jsou  podporovány  jak  POSIX  reliable  signály  (dále  jen
       "standardní signály"), tak POSIX real-time signály.

   Dispozice signálů
       Každý signál má dispozici, která určuje, jak se proces zachová při jeho
       přijetí.

       Údaje  ve sloupci "Akce" níže uvedených tabulek určují výchozí dipozici
       každého signálu následujícně:

       Term   Výchozí akcí je ukončení procesu.

       Ign    Výchozí akcí je ignorování signálu.

       Core   Výchozí akcí je ukončení procesu a výpis paměti (core dump) (viz
              core(5)).

       Stop   Výchozí akcí je zastavení procesu.

       Cont   Výchozí   akcí  je  pokračování  procesu,  pokud  je  momentálně
              zastavený.

       Proces může změnit dispozici signálu  pomocí  sigaction(2)  nebo  (méně
       přenositelně)  signal(2).  Pomocí těchto systémových volání může proces
       vybrat jedno z  následujících  chování,  které  má  nastat  po  přijetí
       signálu:  provést  výchozí akci; ignorovat signál; nebo zachytit signál
       pomocí signal  handler,  programátorem  definovanou  funkcí,  která  je
       automaticky volána při přijetí signálu.

       Dispozice  signálu  je atribut procesu: v mnohovláknových aplikacích je
       dispozice určitého signálu stejná pro všechna vlákna.

   Maska signálu a nevyřízené signály
       Signál může být blokovn, tj. nebude přijat, dokud  nebude  odblokován.
       V  mezidobí  mezi  vygenerovánim signálu a jeho přijetím je signál tzv.
       nevyzen.

       Každé vlákno procesu má nezávislou masku  signlu,  která  určuje  sadu
       signálů,  kterou  vlákno  právě  blokuje.  Vlákno může manipulovat svou
       maskou signálu pomocí  pthread_sigmask(3).   V  klasické  jednovláknové
       aplikaci může být k manipulaci maskou signálu použito sigprocmask(2).

       Signál  může  být vygenerován (a tedy nevyřízený) pro proces jako celek
       (např. posláním pomocí kill(2)) nebo pro určité vlákno  (např.  některé
       signály  jako  SIGSEGV  a  SIGFPE,  vygenerované jako důsledek spuštění
       určité instrukce strojového jazyka, jsou vláknově  orientovány,  stejně
       jako signály zaměřené na určité vlákno pomocí pthread_kill(3)).  Signál
       zaměřený na vlákno může být doručen jakémukoliv vláknu, které jej právě
       neblokuje.  Pokud signál neblokuje více vláken, vybere příjemce signálu
       jádro.

       Vlákno může získat sadu  signálů,  které  jsou  momentálně  nevyřízené,
       pomocí   sigpending(2).    Tato   sada   se  skládá  ze  sloučení  sady
       nevyřízených signálů zaměřených na proces a sady signálů zaměřených  na
       volající vlákno.

   Standardní Signály
       Linux  podporuje níže uvedené standardní signály. Některá čísla signálů
       jsou závislá na architektuře, jak  je  uvedeno  ve  sloupci  "Hodnota".
       (Kde  jsou  uvedeny tři hodnoty, první obvykle platí pro alpha a sparc,
       prostřední pro i386, ppc a sh a poslední pro mips.  Znak - znamená,  že
       signál v odpovídající architektuře chybí.)

        Nejprve jsou uvedeny signály popsané v normě POSIX.1-1990.

       Signál    Hodnota    Akce   Poznámka
       --------------------------------------------------------------------------
       SIGHUP        1      Term   "Hangup" - při zavěšení na řídícím terminálu
                                   nebo ukončení řídícího procesu.
       SIGINT        2      Term   "Interrupt" - přerušení z klávesnice.
       SIGQUIT       3      Core   "Quit" - ukončení z klávesnice.
       SIGILL        4      Core   "Illegal Instruction" - neplatná instrukce.
       SIGABRT       6      Core   "Abort" - ukončení funkcí abort(3)
       SIGFPE        8      Core   "Floating point exception" - přetečení
                                   v pohyblivé řádové čárce.
       SIGKILL       9      Term   "Kill" - signál pro nepodmíněné ukončení
                                   procesu.
       SIGSEGV      11      Core   Odkaz na nepřípustnou adresu v paměti.
       SIGPIPE      13      Term   "Broken pipe" - pokus o zápis do roury,
                                   kterou nemá žádný proces otevřenou pro čtení.
       SIGALRM      14      Term   Signál od časovače, nastaveného funkcí
                                   alarm(1)
       SIGTERM      15      Term   "Termination" - signál ukončení
       SIGUSR1   30,10,16   Term   Signál 1 definovaný uživatelem
       SIGUSR2   31,12,17   Term   Signál 2 definovaný uživatelem
       SIGCHLD   20,17,18   Ign    Zastavení nebo ukončení dětského procesu
       SIGCONT   19,18,25   Cont   Pokračování po zastavení
       SIGSTOP   17,19,23   Stop   Zastavení procesu
       SIGTSTP   18,20,24   Stop   Zastavení znakem "Stop" z terminálu
       SIGTTIN   21,21,26   Stop   čtení z terminálu v procesu běžícím na pozadí
       SIGTTOU   22,22,27   Stop   zápis na terminál v procesu běžícím na pozadí

       Signály   SIGKILL  a  SIGSTOP  nemohou  být  zachyceny,  blokovány  ani
       ignorovány.

       Následují signály na rámec standardu POSIX.1-1990, které jsou popsány v
       SUSv2 a POSIX.1-2001.

       Signál      Hodnota    Akce   Poznámka
       ---------------------------------------------------------------------------------
       SIGBUS      10,7,10    Core   "Bus error" - pokus o přístup mimo mapovanou paměť
       SIGPOLL                Term   Pollable event (Sys V). Synonymum SIGIO
       SIGPROF     27,27,29   Term   Časovač používaný při profilování
       SIGSYS      12,-,12    Core   Nepřípustný parametr syst. volání (SVr4)
       SIGTRAP        5       Core   Přerušení při ladění (trasování,breakpoint)
       SIGURG      16,23,21   Ign    Soket přijal data s příznakem Urgent (4.2 BSD)
       SIGVTALRM   26,26,28   Term   Virtuální časovač (4.2 BSD)
       SIGXCPU     24,24,30   Core   Překročen limit času CPU (4.2 BSD)
       SIGXFSZ     25,25,31   Core   Překročen limit velikosti souboru (4.2 BSD)

       Až  po  Linux  2.2  včetně  bylo  výchozí  chování pro SIGSYS, SIGXCPU,
       SIGXFSZ, a (na architekturách jiných než SPARC a MIPS)  SIGBUS  ukončit
       proces  (bez core dump).  (Na některých jiných Unixových systémech bylo
       výchozí akcí pro SIGXCPU a SIGXFSZ ukončení  procesu  bez  core  dump.)
       Linux  2.4  splňuje  požadavky  POSIX.1-2001 pro tyto signály, ukončuje
       procesy s core dump.

       Další různé signály.

       Signál      Hodnota    Akce   Poznámka
       -------------------------------------------------------------------------
       SIGIOT         6       Core   IOT - synonymum signálu SIGABRT
       SIGEMT       7,-,7     Term
       SIGSTKFLT    -,16,-    Term   Chyba zásobníku koprocesoru (nepoužívá se)
       SIGIO       23,29,22   Term   Lze pokračovat ve vstupu/výstupu (4.2 BSD)

       SIGCLD       -,-,18    Ign    Synonymum SIGCHLD
       SIGPWR      29,30,19   Term   Výpadek napájení (Systém V)
       SIGINFO      29,-,-           Synonymum SIGPWR
       SIGLOST      -,-,-     Term   Zámek souboru byl ztracen
       SIGWINCH    28,28,20   Ign    Změna velikosti okna (4.3 BSD, Sun)
       SIGUNUSED    -,31,-    Term   Nepoužívaný signál (bude SIGSYS)

       Signál č. 29 na procesorech Alpha znamená  SIGINFO  /  SIGPWE,  ale  na
       Sparcu SIGLOST.)

       SIGEMT  není  specifikován  v  POSIX.1-2001,  ale stejně je přítomen na
       většině ostatních  Unixových  systémů,  kde  je  výchozí  akcí  obvykle
       ukončení procesu s core dump.

       SIGPWR   (není   specifikován  v  POSIX.1-2001)  na  většině  ostatních
       Unixových systémů, kde se objevuje, je obvykle ignorován.

       SIGIO (není specifikován v POSIX.1-2001) na některých  dalších  Unixech
       je jako výchozí ignorován.

   Real-time signály
       Linux  podporuje  real-time signály tak, jak jsou definovány v POSIX.1b
       real-time  extensions  (a  nyní  zahrnuty  v   POSIX.1-2001).    Rozsah
       podporovaných real-time signálů je definován makry SIGRTMIN a SIGRTMAX.
       POSIX.1-2001   vyžaduje,   aby   implementace    podporovale    alespoň
       _POSIX_RTSIG_MAX (8) real-time signálů.

       Linux  podporuje  32  různých  real-time signálů očíslovaných 33 až 64.
       Nicméně implementace POSIX threads v glibc  používá  interně  dva  (pro
       NPTL)  nebo tři (pro LinuxThreads) real-time signály (viz pthreads(7)),
       a podle toho upravuje hodnotu SIGRTMIN (na 34 nebo 35).  protože rozsah
       dostupných  real-time  signálů  se  liší  v  závislosti na implementaci
       vláken v glibc (může se měnit za běhu v závislosti na jádře a glibc)  a
       navíc rozsah real-time signálů se mezi Unixovými systémy liší, programy
       by nikdy nemly odkazovat na  real-time  signly  pevn  danmi  sly,
       místo  toho  by měly používat notaci SIGRTMIN+n, a za běhu kontrolovat,
       zda SIGRTMIN+n nepřesahuje SIGRTMAX.

       Na rozdíl od standardních signálů nemají  real-time  signály  stanovený
       význam:  Celá  sada  real-time  signálů  může  být  použita  pro  účely
       definované aplikací.   (Nicméně  pozor,  první  tři  real-time  signály
       používá implementace LinuxThreads.)

       Výchozí  akcí  pro  nezpracovaný  real-time signál je ukončení procesu,
       který jej přijal.

       Real-time signály se liší následujícně:

       1.  Vícero instancí real-time signálů  může  být  zařazeno  do  fronty.
           Naopak  pokud  je  doručeno  vícero  instancí standardního signálu,
           zatímco je signál blokován, je do fronty zařazen jen jeden.

       2.  Pokud je signál poslán pomocí sigqueue(2), může s ním  být  poslána
           doprovodná  hodnota (integer nebo pointer).  Pokud přijímací proces
           vytvoří pro tento  signál  handler  pomocí  vlajky  SA_SIGINFO  pro
           sigaction(2),  tak  může tato data získat v poli si_value struktury
           siginfo_t předané jako druhý argument handleru.   Navíc  mohou  být
           pole  si_pid  a  si_uid této struktury použita k získání PID a real
           user ID procesu, který signál poslal.

       3.  Real-time signály jsou doručeny v zaručeném pořadí.   Vícero  real-
           time  signálů  stejného  typu  je  doručeno  v pořadí, v jakém byly
           vyslány.  Pokud jsou procesu poslány různé real-time signály,  jsou
           doručeny v pořadí podle čísla, začínajíc nejnižším.  (tj. signály s
           nízkým číslem mají vyšší prioritu)

       Pokud má proces nevyřízené  zároveň  real-time  a  standardní  signály,
       POSIX neurčuje, které mají být doručeny jako první.  Linux, stejně jako
       mnoho jiných implementací, v  takovém  případě  upřednostňí  standardní
       signály.

       Podle  POSIX  by  měla  implementace pro frontu procesu povolit alespoň
       _POSIX_SIGQUEUE_MAX (32) real-time signálů.  Linux ale  pracuje  jinak.
       V  jádrech do 2.6.7 včetně stanovuje Linux celosystémový limit na počet
       real-time signálů ve frontách všech  procesů.   tento  limit  je  možné
       zjistit     a    (s    patřičnými    právy)    změnit    přes    soubor
       /proc/sys/kernel/rtsig-max.  Další  soubor,  /proc/sys/kernel/rtsig-nr,
       může  být  použit ke zjištění, kolik real-time signálů je momentálně ve
       frontách.  V Linuxu 2.6.8 byla tato /proc  rozhraní  nahrazena  limitem
       zdrojů  RLIMIT_SIGPENDING,  který  určuje  uživatelský  limit  na počet
       signálů ve frontách; více viz setrlimit(2).

   Async-signal-safe functions
       Rutina  zpracovávající  signál,  kterou  vytvořil   sigaction(2)   nebo
       signal(2),  musí  být  velmi  opatrná, neboť její zpracování může být v
       určitých  místech  programu  přerušeno.   POSIX  má  koncept  "bezpečné
       funkce".  Pokud  signál přeruší vykonávání ne-bezpečné funkce a handler
       zavolá ne-bezpečnou funkci, potom  je  chování  programu  nedefinováno.
       POSIX.1-2003  vyžaduje,  aby  implementace  zaručovala  bezpečné volání
       následujících funkcí v rámci "signal handleru":

           _Exit()
           _exit()
           abort()
           accept()
           access()
           aio_error()
           aio_return()
           aio_suspend()
           alarm()
           bind()
           cfgetispeed()
           cfgetospeed()
           cfsetispeed()
           cfsetospeed()
           chdir()
           chmod()
           chown()
           clock_gettime()
           close()
           connect()
           creat()
           dup()
           dup2()
           execle()
           execve()
           fchmod()
           fchown()
           fcntl()
           fdatasync()
           fork()
           fpathconf()
           fstat()
           fsync()
           ftruncate()
           getegid()
           geteuid()
           getgid()
           getgroups()
           getpeername()
           getpgrp()
           getpid()
           getppid()
           getsockname()
           getsockopt()
           getuid()
           kill()
           link()
           listen()
           lseek()
           lstat()
           mkdir()
           mkfifo()
           open()
           pathconf()
           pause()
           pipe()
           poll()
           posix_trace_event()
           pselect()
           raise()
           read()
           readlink()
           recv()
           recvfrom()
           recvmsg()
           rename()
           rmdir()
           select()
           sem_post()
           send()
           sendmsg()
           sendto()
           setgid()
           setpgid()
           setsid()
           setsockopt()
           setuid()
           shutdown()
           sigaction()
           sigaddset()
           sigdelset()
           sigemptyset()
           sigfillset()
           sigismember()
           signal()
           sigpause()
           sigpending()
           sigprocmask()
           sigqueue()
           sigset()
           sigsuspend()
           sleep()
           socket()
           socketpair()
           stat()
           symlink()
           sysconf()
           tcdrain()
           tcflow()
           tcflush()
           tcgetattr()
           tcgetpgrp()
           tcsendbreak()
           tcsetattr()
           tcsetpgrp()
           time()
           timer_getoverrun()
           timer_gettime()
           timer_settime()
           times()
           umask()
           uname()
           unlink()
           utime()
           wait()
           waitpid()
           write()

POZNÁMKA K PŘEKLADU

       U často se vyskytujících signálů byly ponechány ve sloupci "Poznámka" i
       původní  termíny.  Snáze  se  pak  z  hlášení shellu o ukončení procesu
       lokalizuje, kterým signálem byl proces přerušen.

SPLŇUJE STANDARDY

       POSIX.1

CHYBY

       Signály SIGIO a SIGLOST mají stejnou hodnotu.  SIGLOST se ve zdrojových
       textech  jádra již nepoužívá, ale při překladu určitých balíků software
       se stále předpokládá, že signál č.29 znamená SIGLOST.

DALŠÍ INFORMACE

       kill(1), kill(2), killpg(2), setitimer(2),  setrlimit(2),  sgetmask(2),
       sigaction(2),  signal(2),  sigpending(2),  sigprocmask(2), sigqueue(2),
       sigsuspend(2), sigwaitinfo(2), bsd_signal(3), raise(3), sigvec(3), sig-
       set(3), strsignal(3), sysv_signal(3), core(5), proc(5), pthreads(7)

TIRÁŽ

       Tato  stránka  je  součástí projektu Linux man-pages.  Popis projektu a
       informace o  hlášení  chyb  najdete  na  http://www.kernel.org/doc/man-
       pages/.