--- libaitsched/example/test.c 2014/06/05 22:37:29 1.14 +++ libaitsched/example/test.c 2023/02/24 16:20:06 1.14.30.2 @@ -138,9 +138,24 @@ void sig(int s) case SIGTERM: 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) { @@ -149,16 +164,18 @@ main(int argc, char **argv) struct sockaddr_in sin; struct timespec ts = { 20, 0 }; // struct timespec p = { 0, 10000000 }; - struct sigaction sa; +// 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 +312,15 @@ main(int argc, char **argv) schedCallOnce(root, once, "000000", 42, NULL, 0); + 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);