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

JMÉNO

       signal - přehled 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 handleru,  programátorem  definovanou  funkcí,  která  je
       automaticky volána při přijetí signálu. (By default, the signal handler
       is invoked on the normal process stack. It is possible to arrange  that
       the  signal  handler uses an alternate stack; see sigaltstack(2)  for a
       discussion of how to do this and when it might be useful.)

       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.

       A  child  created  via  fork(2)  inherits a copy of its parent's signal
       dispositions. During an execve(2), the dispositions of handled  signals
       are  reset to the default; the dispositions of ignored signals are left
       unchanged.

   Poslání signálu
       The following system calls and library functions allow  the  caller  to
       send a signal:

       raise(3)        Sends a signal to the calling thread.

       kill(2)         Sends  a  signal to a specified process, to all members
                       of a specified process group, or to  all  processes  on
                       the system.

       killpg(2)       Sends  a  signal  to  all of the members of a specified
                       process group.

       pthread_kill(3) Sends a signal to a specified POSIX thread in the  same
                       process as the caller.

       tgkill(2)       Sends  a signal to a specified thread within a specific
                       process. (This is the system  call  used  to  implement
                       pthread_kill(3).)

       sigqueue(2)     Sends  a  real-time  signal with accompanying data to a
                       specified process.

   Waiting for a Signal to be Caught
       The following system calls suspend execution of the calling process  or
       thread  until a signal is caught (or an unhandled signal terminates the
       process):

       pause(2)        Suspends execution until any signal is caught.

       sigsuspend(2)   Temporarily changes the signal  mask  (see  below)  and
                       suspends execution until one of the unmasked signals is
                       caught.

   Synchronously Accepting a Signal
       Rather than asynchronously catching a signal via a signal  handler,  it
       is  possible  to  synchronously  accept  the  signal, that is, to block
       execution until the signal is delivered,  at  which  point  the  kernel
       returns  information  about  the  signal  to  the caller. There are two
       general ways to do this:

       * sigwaitinfo(2), sigtimedwait(2), and  sigwait(3)   suspend  execution
         until  one  of  the  signals in a specified set is delivered. Each of
         these calls returns information about the delivered signal.

       * signalfd(2)  returns a file descriptor  that  can  be  used  to  read
         information  about  signals  that  are  delivered to the caller. Each
         read(2) from this file descriptor blocks until one of the signals  in
         the  set  specified  in  the  signalfd(2)   call  is delivered to the
         caller.  The  buffer  returned  by  read(2)   contains  a   structure
         describing the signal.

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

       A child created via fork(2)  inherits a copy  of  its  parent's  signal
       mask; the signal mask is preserved across execve(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.

       A child created via fork(2)  initially has an empty pending signal set;
       the pending signal set is preserved across an execve(2).

   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                                                                      HodnotaAkcePoznámka
       ─────────────────────────────────────────────────────────────────────────────────────────
       SIGHUP                                                                       1Term"Hangup" - při zavěšení na řídícím terminálu

                                                                                   nebo ukončení řídícího procesu.
       SIGINT                                                                       2Term"Interrupt" - přerušení z klávesnice.

       SIGQUIT                                                                      3Core"Quit" - ukončení z klávesnice.

       SIGILL                                                                       4Core"Illegal Instruction" - neplatná instrukce.

       SIGABRT                                                                      6Core"Abort" - ukončení funkcí abort(3)

       SIGFPE                                                                       8Core"Floating point exception" - přetečení v pohyblivé řádové čárce.

       SIGKILL                                                                      9Term"Kill" - signál pro nepodmíněné ukončení procesu.

       SIGSEGV                                                                     11CoreOdkaz na nepřípustnou adresu v paměti.

       SIGPIPE                                                                     13Term"Broken pipe" - pokus o zápis do roury,

                                                                                   kterou nemá žádný proces otevřenou pro čtení.
       SIGALRM                                                                     14TermSignál od časovače, nastaveného funkcí alarm(1)

       SIGTERM                                                                     15Term"Termination" - signál ukončení

       SIGUSR1                                                                     30,10,16TermSignál 1 definovaný uživatelem

       SIGUSR2                                                                     31,12,17TermSignál 2 definovaný uživatelem

       SIGCHLD                                                                     20,17,18IgnZastavení nebo ukončení dětského procesu

       SIGCONT                                                                     19,18,25ContPokračování po zastavení

       SIGSTOP                                                                     17,19,23StopZastavení procesu

       SIGTSTP                                                                     18,20,24StopZastavení znakem "Stop" z terminálu

       SIGTTIN                                                                     21,21,26Stopčtení z terminálu v procesu běžícím na pozadí

       SIGTTOU                                                                     22,22,27Stopzá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 nad rámec standardu POSIX.1-1990, které jsou popsány
       v SUSv2 a POSIX.1-2001.

       Signál                                                             HodnotaAkcePoznámka
       ────────────────────────────────────────────────────────────────────────────────
       SIGBUS                                                             10,7,10Core"Bus error" - pokus o přístup mimo mapovanou paměť

       SIGPOLL                                                            TermPollable event (Sys V).
                                                                          Synonymum SIGIO
       SIGPROF                                                            27,27,29TermČasovač používaný při profilování

       SIGSYS                                                             12,-,12CoreNepřípustný parametr syst. volání (SVr4)

       SIGTRAP                                                            5CorePřerušení při ladění (trasování,breakpoint)

       SIGURG                                                             16,23,21IgnSoket přijal data s příznakem Urgent (4.2 BSD)

       SIGVTALRM                                                          26,26,28TermVirtuální časovač (4.2 BSD)

       SIGXCPU                                                            24,24,30CorePřekročen limit času CPU (4.2 BSD)

       SIGXFSZ                                                            25,25,31CorePř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                                                       HodnotaAkcePoznámka
       ──────────────────────────────────────────────────────────────────────────
       SIGIOT                                                       6CoreIOT - synonymum signálu SIGABRT

       SIGEMT                                                       7,-,7Term
       SIGSTKFLT                                                    -,16,-TermChyba zásobníku koprocesoru (nepoužívá se)

       SIGIO                                                        23,29,22TermLze pokračovat ve vstupu/výstupu (4.2 BSD)

       SIGCLD                                                       -,-,18IgnSynonymum SIGCHLD

       SIGPWR                                                       29,30,19TermVýpadek napájení (Systém V)

       SIGINFO                                                      29,-,-Synonymum SIGPWR

       SIGLOST                                                      -,-,-TermZámek souboru byl ztracen

       SIGWINCH                                                     28,28,20IgnZměna velikosti okna (4.3 BSD, Sun)

       SIGUNUSED                                                    -,31,-TermNepouží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). Naopak, pokud na proces čeká
           vícero  standardních   signálů,   není   pořadí   jejich   doručení
           definováno.

       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-2004  (také  známý  jako  POSIX.1-2001 Technical Corrigendum 2)
       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()
           sockatmark()
           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()

       POSIX.1-2008 odstraňuje fpathconf(), pathconf() a sysconf() z uvedeného
       seznamu a přidává následující funkce:

           execl()
           execv()
           faccessat()
           fchmodat()
           fchownat()
           fexecve()
           fstatat()
           futimens()
           linkat()
           mkdirat()
           mkfifoat()
           mknod()
           mknodat()
           openat()
           readlinkat()
           renameat()
           symlinkat()
           unlinkat()
           utimensat()
           utimes()

   Přerušení systémových volání  a  funkcí  knihoven  prostřednictvím  "signal
       handlers"
       Pokud  je  signal  handler  vyvolán v okamžiku, kdy je systémové volání
       nebo funkce knihovny blokována, pak:

       * je volání automaticky restartováno po návratu signal handleru, nebo

       * volání selže s chybou EINTR.

       Která z těchto možností nastane, záleží na rozhraní a na tom,  zda  byl
       signal handler definován s pomocí vlajky SA_RESTART (viz sigaction(2)).
       Podrobnosti se mezi Unixovými  systémy  liší;  dále  jsou  uvedeny  pro
       Linux.

       Pokud  je blokované volání pro jedno z následujících rozhraní přerušeno
       signal  handlerem  a  byla  použita  vlajka   SA_RESTART,   je   volání
       automaticky  restartováno po návratu signal handleru. V opačném případě
       volání selže s chybou EINTR:

           * Volání read(2),  readv(2),  write(2),  writev(2)  a  ioctl(2)  na
             "pomalých"  zařízeních.  "Pomalé"  zařízení  je  takové,  kde I/O
             volání může blokovat nekonečně dlouho - například terminál, roura
             nebo  socket.  (Podle  této definice není disk pomalým zařízením)
             Pokud je I/O volání přerušeno signal handlerem  v  okamžiku,  kdy
             již  přeneslo  nějaká  data, je návratovou hodnotou volání úspěch
             (obvykle počet přenesených bajtů).

           * open(2), v případě, že může blokovat (např. při  otevírání  FIFO;
             viz fifo(7)).

           * wait(2), wait3(2), wait4(2), waitid(2) a waitpid(2).

           * Rozhraní  socketů:  accept(2),  connect(2), recv(2), recvfrom(2),
             recvmsg(2), send(2), sendto(2) a sendmsg(2); neplatí  v  případě,
             že byl pro socket nastaven časový limit (viz níže).

           * Rozhraní souborových zámků: flock(2) a fcntl(2)  F_SETLKW.

           * Rozhraní    pro    POSIXové    fronty    zpráv:    mq_receive(3),
             mq_timedreceive(3), mq_send(3) a mq_timedsend(3).

           * futex(2)  FUTEX_WAIT (od jádra 2.6.22; předtím vždycky selhalo  s
             EINTR).

           * Rozhraní  POSIXových semaforů: sem_wait(3) a sem_timedwait(3) (od
             jádra 2.6.22; předtím vždycky selhalo s EINTR).

       Následující  rozhraní  se   po   přerušení   signal   handlerem   nikdy
       nerestartují,  bez  ohledu  na  použití  SA_RESTART  - vždycky selžou s
       chybou EINTR:

           * Rozhraní socketů v případě, že byl  pro  socket  nastaven  časový
             limit  pomocí  setsockopt(2):  accept(2),  recv(2), recvfrom(2) a
             recvmsg(2)  -  pokud  byl  nastaven  časový  limit  pro   přijetí
             (SO_RCVTIMEO);  connect(2),  send(2),  sendto(2)  a  sendmsg(2) -
             pokud byl nastaven časový limit pro odeslání (SO_SNDTIMEO).

           * Rozhraní používaná k čekání na signály: pause(2),  sigsuspend(2),
             sigtimedwait(2) a sigwaitinfo(2).

           * Multiplexující   rozhraní   popisovačů   souborů:  epoll_wait(2),
             epoll_pwait(2), poll(2), ppoll(2), select(2) a pselect(2).

           * System  V  IPC  rozhraní:  msgrcv(2),   msgsnd(2),   semop(2)   a
             semtimedop(2).

           * Rozhraní   pro   spánek:   clock_nanosleep(2),   nanosleep(2)   a
             usleep(3).

           * read(2)  z popisovače souborů inotify(7).

           * io_getevents(2).

       Funkce sleep(3) se také při přerušení  signal  handlerem  nerestartuje,
       nýbrž vrátí úspěch: počet sekund, které zbývají ke spaní.

   Přerušení systémovách volání a funkcí knihoven signály Stop
       V  Linuxu  mohou některá blokující rozhraní selhat s chybou EINTR i bez
       signal handlerů, pokud je proces zastaven jedním ze stop signálů a poté
       obnoven pomocí SIGCONT. Toto chování neodporuje POSIX.1 a neobjevuje se
       v jiných systémech.

       Linuxová rozhraní, v nichž se toto chování projevuje, jsou:

           * Rozhraní socketů v případě, že byl  pro  socket  nastaven  časový
             limit  pomocí  setsockopt(2):  accept(2),  recv(2), recvfrom(2) a
             recvmsg(2)  -  pokud  byl  nastaven  časový  limit  pro   přijetí
             (SO_RCVTIMEO);  connect(2),  send(2),  sendto(2)  a  sendmsg(2) -
             pokud byl nastaven časový limit pro odeslání (SO_SNDTIMEO).

           * epoll_wait(2), epoll_pwait(2).

           * semop(2), semtimedop(2).

           * sigtimedwait(2), sigwaitinfo(2).

           * read(2)  z popisovače souborů inotify(7).

           * Jádro 2.6.21 a dřívější: futex(2)  FUTEX_WAIT,  sem_timedwait(3),
             sem_wait(3).

           * Jádro 2.6.8 a dřívější: msgrcv(2), msgsnd(2).

           * Jádro 2.4 a dřívější: nanosleep(2).

SPLŇUJE STANDARDY

       POSIX.1, s uvedenými výjimkami.

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),  getrlimit(2), kill(2), killpg(2), setitimer(2), setrlimit(2),
       sgetmask(2),  sigaction(2),  sigaltstack(2),  signal(2),   signalfd(2),
       sigpending(2),      sigprocmask(2),     sigqueue(2),     sigsuspend(2),
       sigwaitinfo(2),   abort(3),   bsd_signal(3),   longjmp(3),    raise(3),
       sigset(3),    sigsetops(3),    sigvec(3),   sigwait(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/.