[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[Libevent-users] Possible to use libevent to handle SIGTERM and SIGQUIT



Hello,

I just wondered whether libevent event loop can handle the SIGTERM and
SIGQUIT appropriately.  Here is the code snippet I am trying to exit
the message loop gracefully and brutally:

static void quick_shutdown(evutil_socket_t _, short what, void* ctx) {
    struct event_base *evb = (struct event_base*) ctx;
    event_base_loopbreak(evb);
}

static void graceful_shutdown(evutil_socket_t _, short what, void* ctx) {
    struct event_base *evb = (struct event_base*) ctx;
    event_base_loopexit(evb, NULL);
}

// main()
    /* signal handling */
    struct event *quit = evsignal_new(base, SIGQUIT, graceful_shutdown, base);
    struct event *term = evsignal_new(base, SIGTERM, quick_shutdown, base);

    /* message loop */
    event_base_dispatch(base);

    /* cleanup the mess */
    event_free(quit);
    event_free(term);
    event_base_free(base);
    return 0;

I expect that the process exits the message loop with kill -15 or kill
-3. But it never happens. I wonder whether something wrong with my
code, or we should not use libevent to handle SIGQUIT and SIGTERM.

Thanks,
Best regards,
Kun
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.