From: Sven M. Hallberg Date: Tue, 14 Oct 2014 13:27:45 +0000 (+0200) Subject: publish example: exit cleanly on SIGINT, SIGTERM X-Git-Url: http://git.meshlink.io/?p=catta;a=commitdiff_plain;h=f9f5f0f3cd6c0af6a84af274ef8c4c5302d0a5fb publish example: exit cleanly on SIGINT, SIGTERM --- diff --git a/examples/core-publish-service.c b/examples/core-publish-service.c index 8d6377e..1d5ce9d 100644 --- a/examples/core-publish-service.c +++ b/examples/core-publish-service.c @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -189,6 +191,14 @@ static void server_callback(CattaServer *s, CattaServerState state, CATTA_GCC_UN } } +static void signal_exit(int signum) { + int errnosave = errno; + catta_simple_poll_quit(simple_poll); + errno = errnosave; + + (void)signum; // ignore +} + int main(CATTA_GCC_UNUSED int argc, CATTA_GCC_UNUSED char*argv[]) { CattaServerConfig config; CattaServer *server = NULL; @@ -224,6 +234,10 @@ int main(CATTA_GCC_UNUSED int argc, CATTA_GCC_UNUSED char*argv[]) { goto fail; } + /* exit cleanly on signals */ + signal(SIGINT, signal_exit); + signal(SIGTERM, signal_exit); + /* Run the main loop */ catta_simple_poll_loop(simple_poll);