Provided by: manpages-cs-dev_4.15.0-9_all bug

JMÉNO

       atexit - registruje funkci, která se má vyvolat při ukončení procesu

POUŽITÍ

       #include <stdlib.h>

       int atexit(void (*function)(void));

POPIS

       Funkce  atexit()  zařadí  function  do  seznamu  funkcí, které jsou vyvolány při normálním
       ukončení programu, ať už funkcí  exit(3)   nebo  návratem  z  funkce  main.  Funkce  takto
       registrované jsou volány v obráceném pořadí jejich registrace; nejsou jim poskytnuty žádné
       argumenty.

       The same  function  may  be  registered  multiple  times:  it  is  called  once  for  each
       registration.

       POSIX.1   vyžaduje,   aby  implementace  dovolovala  minimálně  ATEXIT_MAX(32)  registrací
       takovýchto funkcí. Skutečný počet možných registrací podporovaných v dané implementaci  je
       možné zjistit pomocí sysconf(3).

       Při  vytvoření procesu pomocí fork(2), zdědí potomek registrace svých rodičů. Při úspěšném
       volání funkce exec(3), jsou všechny registrace odstraněny.

NÁVRATOVÉ HODNOTY

       Funkce atexit() vrací hodnotu 0, byla-li úspěšná, jinak je vrácena nenulová hodnota.

ATRIBUTY

       For an explanation of the terms used in this section, see attributes(7).

       ┌───────────────────────────────────────────────────────────────┬───────────────┬─────────┐
       │InterfaceAtributHodnota │
       ├───────────────────────────────────────────────────────────────┼───────────────┼─────────┤
       │atexit()                                                       │ Thread safety │ MT-Safe │
       └───────────────────────────────────────────────────────────────┴───────────────┴─────────┘

SPLŇUJE STANDARDY

       POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.

POZNÁMKY

       Funkce registrované  pomocí  atexit()  (a  on_exit(3))  nejsou  volány,  pokud  je  proces
       abnormálně ukončen, například kvůli doručení signálu.

       If  one  of  the registered functions calls _exit(2), then any remaining functions are not
       invoked, and the other process termination steps performed by exit(3)  are not performed.

       POSIX.1 says that the result of calling exit(3)  more than  once  (i.e.,  calling  exit(3)
       within  a  function  registered  using  atexit())   is undefined. On some systems (but not
       Linux), this can result in an infinite recursion;  portable  programs  should  not  invoke
       exit(3)  inside a function registered using atexit().

       The  atexit()   and  on_exit(3)   functions register functions on the same list: at normal
       process termination, the registered functions  are  invoked  in  reverse  order  of  their
       registration by these two functions.

       According  to  POSIX.1,  the  result  is  undefined  if  longjmp(3)   is used to terminate
       execution of one of the functions registered using atexit().

   Linuxová poznámka
       Od verze glibc 2.2.3, mohou být atexit() (a on_exit(3)) použity uvnitř sdílených knihoven,
       aby spouštěly funkce, které jsou volány, je-li knihovna uvolněna z paměti.

PŘÍKLADY

       #include <stdio.h>
       #include <stdlib.h>
       #include <unistd.h>

       void
       bye(void)
       {
           printf("That was all, folks\n");
       }

       int
       main(void)
       {
           long a;
           int i;

           a = sysconf(_SC_ATEXIT_MAX);
           printf("ATEXIT_MAX = %ld\n", a);

           i = atexit(bye);
           if (i != 0) {
               fprintf(stderr, "cannot set exit function\n");
               exit(EXIT_FAILURE);
           }

           exit(EXIT_SUCCESS);
       }

DALŠÍ INFORMACE

       _exit(2), dlopen(3), exit(3), on_exit(3)

TIRÁŽ

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

PŘEKLAD

       Překlad této příručky do španělštiny vytvořili Pavel Heimlich <tropikhajma@gmail.com>

       Tento překlad je bezplatná dokumentace; Přečtěte si GNU General Public License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ nebo novější ohledně podmínek autorských práv.
       Neexistuje ŽÁDNÁ ODPOVĚDNOST.

       Pokud narazíte na nějaké  chyby  v  překladu  této  příručky,  pošlete  e-mail  na  adresu
       ⟨translation-team-cs@lists.sourceforge.net⟩.