It seems that ev_loop_fork didn't work as expected. Am I misunderstand the document? So, can any guys shows me an example which would have different behavior if I call the ev_loop_fork or not? Thanks Looking forward for any useful advice.
2016-02-24 21:22 GMT+08:00, adream <[email protected]>: > hi > I thought, if I didn't call the ev_loop_fork in the child, then the > watcher in child wouldn't be triggered. > This is my code, I build the ev_loop with EVBACKEND_EPOLL and > EVFLAG_NOENV flags, so there is no EVFLAG_FORKCHECK flag, then I comment > the ev_loop_fork call in the child. if everything goes well, I thought the > child will not trigger the timeout callback function. but actually, the > output is something like this: > 4980 fork 4981 > time out at 4980 > time out at 4981 > it means that the watchers also has been triggered in the child. > > > > > #include<ev.h> > #include<stdio.h> > #include<unistd.h> > > void timeout_cb(EV_P_ ev_timer *w,int revents) > { > printf("time out at %d\n", getpid()); > ev_break(EV_A_ EVBREAK_ONE); > } > > int main() > { > int ret; > ev_timer timeout_watcher; > > struct ev_loop *loop = ev_default_loop(EVBACKEND_EPOLL | EVFLAG_NOENV); > > ev_timer_init(&timeout_watcher,timeout_cb,5.5,0.); > ev_timer_start(loop,&timeout_watcher); > ret = fork(); > if(ret>0) printf("%d fork %d\n",getpid(),ret); > else if(ret==0) > { > //ev_loop_fork(EV_DEFAULT); > } > else return -1; > ev_run(loop,0); > return 0; > } > _______________________________________________ libev mailing list [email protected] http://lists.schmorp.de/mailman/listinfo/libev
