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