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