signal.c 482 B

123456789101112131415161718192021222324252627
  1. #include <signal.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include "include/log.h"
  5. #include "include/list.h"
  6. #include "include/led.h"
  7. #include "include/signal.h"
  8. void (*crtlc_cb)(void) = 0;
  9. static void handlerINT(int s)
  10. {
  11. log_printf("caught sig int ... cleaning up\n");
  12. if(crtlc_cb)
  13. crtlc_cb();
  14. exit(0);
  15. }
  16. void signal_init(void (*_crtlc_cb)(void))
  17. {
  18. struct sigaction s;
  19. crtlc_cb = _crtlc_cb;
  20. s.sa_handler = handlerINT;
  21. s.sa_flags = 0;
  22. sigaction(SIGINT, &s, NULL);
  23. }