Add example for iomux signals
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user