On 12/2/19 9:55 PM, José Bollo wrote: > > I tried to write something like "while(true) MHD_run();" but strace > showed its inefficiency.
Oh my. Yes, that'd be bad. > IMHO it can make sense: "1. setup 2. run" without exit conditon and not > bound to any stdin, i.e. a normal unix daemon. > Well, that's trivial. Please consider the attached fragment (not tested, but should be very close to what you need, modulo error handling).
// launch MHD with MHD_USE_EPOLL (and NOT any "INTERNAL_THREAD") { int fd; fd = MHD_get_daemon_info (daemon, MHD_DAEMON_INFO_EPOLL_FD)->epoll_fd; while (1) { fd_set r; MHD_UNSIGNED_LONG_LONG to; struct timeval tv; FD_ZERO (&r); FD_SET (fd, &r); MHD_get_timeout (daemon, &to); tv.tv_sec = (to / 1000LLU); tv.tv_usec = (to % 1000LLU) * 1000; select (r + 1, &r, NULL, NULL, NULL); MHD_run (daemon); } }
signature.asc
Description: OpenPGP digital signature