Diskuze: atexit()

C++ C a C++ atexit()

Avatar
rikenbekr
Člen
Avatar
rikenbekr:

Když potřebuji na konci programu provést nějakou funkci bez ohledu na to kde a jak skončí musím atexit dát do všech funkcí nebo stačí do main()?

Odpovědět 4.4.2015 18:22
In world without fences and walls, who needs Gates and Windows?
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na rikenbekr
Martin Dráb:

Volání atexit informuje běhové prostředí, že funkce specifikovaná v parametru volání má být zavolána při ukončování programu.

Přičemž je možné takových funkcí registrovat víc. Zavolají se všechny (v pořadí opačném od pořadí registrace).

Tudíž pokud chceš, aby se ti při ukončování volala jen jedna funkce, stačí atexit zavolat jednou.

Samozřejmě, pokud ti někdo tvůj program ukončí násilně, žádná z registrovaných funkcí se nezavolá.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 4.4.2015 19:26
2 + 2 = 5 for extremely large values of 2
Avatar
rikenbekr
Člen
Avatar
rikenbekr:

A počítá se jako násilné např Alt+F4?

Nahoru Odpovědět 4.4.2015 20:54
In world without fences and walls, who needs Gates and Windows?
Avatar
embi
Člen
Avatar
embi:

Nemělo by, násilné je to třeba když to zabiješ proces.

 
Nahoru Odpovědět 4.4.2015 21:03
Avatar
rikenbekr
Člen
Avatar
rikenbekr:

a provedou se ty funkce i když bude program ukončen returnem ? a ne exitem?

Nahoru Odpovědět 4.4.2015 22:18
In world without fences and walls, who needs Gates and Windows?
Avatar
Martin Dráb
Redaktor
Avatar
Martin Dráb:

A počítá se jako násilné např Alt+F4?

Nemyslím.

a provedou se ty funkce i když bude
program ukončen returnem ? a ne exitem?

Ano. Po návratu z mainu se nakonec bude exit() volat stejně, to zajistí běhové prostředí.

Nahoru Odpovědět 4.4.2015 22:51
2 + 2 = 5 for extremely large values of 2
Avatar
rikenbekr
Člen
Avatar
rikenbekr:

Díky :-)

Nahoru Odpovědět 4.4.2015 23:52
In world without fences and walls, who needs Gates and Windows?
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.