Files
libucore/test/iomux_signal_test.c
T
2015-11-30 20:34:32 +01:00

42 lines
1.1 KiB
C

#include "ucore/iomux_signal.h"
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <assert.h>
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;
}