Hi!

from the information given in the manpage I would expect that 
ev_default_destroy() "cleans" up the default event loop in such a way it can be 
reinitialized and behaves as if it was never used (as long as there were no 
active signal/child watchers and you don't care about the watchers that were 
active before the call).
In other words, I would expect a small program like this one to return 
immediately:

int
main(int argc, char **argv)
{
        ev_timer timer;

        ev_timer_init(&timer, timer_cb, 10., 0.);
        ev_timer_start(EV_DEFAULT_ &timer);

        ev_default_destroy();

        ev_loop(EV_DEFAULT_ 0);

        return 0;
}

however it doesn't - it blocks indefinitely. Of course I can stop the watcher 
and everthing's fine. I just wanted to know whether ev_default_destroy() is 
supposed to work that way and if not exactly under which circumstances it can 
be useful.
I was tempted to use it once in a program where the default loop definitely 
makes sense (synchronizing signals without asyncs etc), at some point forks and 
has to clean up the default loop in the new process to allow some scripts to 
work with it (no execve either). I ended up stopping all watchers & resetting 
the still-messed-up signal handlers manually after invoking ev_default_fork().

cheers,
Robin Haberkorn

-- 
-- 
------------------ managed broadband access ------------------

Travelping GmbH               phone:           +49-391-8190990
Roentgenstr. 13               fax:           +49-391-819099299
D-39108 Magdeburg             email:       i...@travelping.com
GERMANY                       web:   http://www.travelping.com


Company Registration: Amtsgericht Stendal Reg No.:   HRB 10578
Geschaeftsfuehrer: Holger Winkelmann | VAT ID No.: DE236673780
--------------------------------------------------------------


_______________________________________________
libev mailing list
libev@lists.schmorp.de
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to