signal.c 332 B

12345678910111213
  1. #include <signal.h>
  2. #include <stddef.h>
  3. #include "syscall.h"
  4. int __sigaction(int, const struct sigaction *, struct sigaction *);
  5. void (*signal(int sig, void (*func)(int)))(int)
  6. {
  7. struct sigaction sa = { .sa_handler = func, .sa_flags = SA_RESTART };
  8. if (__sigaction(sig, &sa, &sa) < 0)
  9. return SIG_ERR;
  10. return sa.sa_handler;
  11. }