--- libaitsched/example/test.c 2014/06/05 22:37:29 1.14 +++ libaitsched/example/test.c 2023/02/25 15:55:00 1.15 @@ -136,11 +136,28 @@ void sig(int s) { switch (s) { case SIGTERM: + case SIGINT: + printf("I'm in switch case %d\n", s); Kill[0]++; break; + case SIGHUP: + printf("Test SIGHUP\n"); + break; } } +void *sigt(sched_task_t *arg) +{ + int s = TASK_VAL(arg); + + printf("Received signal #%d\n", s); + + sig(s); + + schedSignalSelf(arg); + taskExit(arg, NULL); +} + int main(int argc, char **argv) { @@ -148,17 +165,19 @@ main(int argc, char **argv) int f, fd; struct sockaddr_in sin; struct timespec ts = { 20, 0 }; -// struct timespec p = { 0, 10000000 }; - struct sigaction sa; + struct timespec p = { 0, 10000000 }; +// struct sigaction sa; sched_task_t *t; #ifdef AIO_SUPPORT char *ole = malloc(BUFSIZ); register int i; #endif + /* sa.sa_handler = sig; sigemptyset(&sa.sa_mask); sigaction(SIGTERM, &sa, NULL); + */ f = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (f == -1) @@ -295,8 +314,15 @@ main(int argc, char **argv) schedCallOnce(root, once, "000000", 42, NULL, 0); -// schedPolling(root, &p, NULL); + printf("add signals\n"); + schedSignal(root, sigt, NULL, SIGHUP, NULL, 0); + schedSignal(root, sigt, NULL, SIGTERM, NULL, 0); + schedSignal(root, sigt, NULL, SIGINT, NULL, 0); + + schedPolling(root, &p, NULL); + schedSignalDispatch(root, 42); schedRun(root, Kill); + schedSignalDispatch(root, 0); schedEnd(&root); sleep(1);