From 2b48fe9403d744f304e856f8b95b06bf3d05fdfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20O=2E=20Sel=C3=A5sdal?= Date: Mon, 30 Nov 2015 20:34:32 +0100 Subject: [PATCH] Add example for iomux signals --- test/iomux_signal_test.c | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/iomux_signal_test.c diff --git a/test/iomux_signal_test.c b/test/iomux_signal_test.c new file mode 100644 index 0000000..fc7984f --- /dev/null +++ b/test/iomux_signal_test.c @@ -0,0 +1,41 @@ +#include "ucore/iomux_signal.h" +#include +#include +#include +#include +#include + +void sig_handler(struct IOMux *mux, int signo, void *cookie) +{ + char sig_str[64]; + snprintf(sig_str, sizeof sig_str, "Got signal %d\n", signo); + + write(STDOUT_FILENO, sig_str, strlen(sig_str)); +} + +int main(int argc, char *argv[]) +{ + + struct IOMux *mux = iomux_create(IOMUX_TYPE_EPOLL); + int rc; + + rc = iomux_register_unixsignal(mux, SIGKILL, sig_handler, NULL); + assert(rc != 0); + rc = iomux_register_unixsignal(mux, SIGUSR1, sig_handler, NULL); + assert(rc == 0); + rc = iomux_unregister_unixsignal(mux, SIGINT); + assert(rc == 0); + rc = iomux_unregister_unixsignal(mux, SIGUSR1); + assert(rc == 0); + rc = iomux_register_unixsignal(mux, SIGINT, sig_handler, NULL); + assert(rc == 0); + rc = iomux_register_unixsignal(mux, SIGUSR1, sig_handler, NULL); + assert(rc == 0); + rc = iomux_register_unixsignal(mux, SIGUSR1, sig_handler, NULL); + assert(rc != 0); + + iomux_run(mux); + iomux_delete(mux); + + return 0; +}