Viewing: signal_wrap.c
📄 signal_wrap.c (Read Only) ⬅ To go back
#include "signal.h"

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler) {
    struct sigaction sa, old;
    sa.sa_handler = (uintptr_t)handler;
    sa.sa_mask = 0;
    sa.sa_flags = SA_RESTART;
    if (sigaction(signum, &sa, &old) < 0)
        return (sighandler_t)-1;  /* SIG_ERR */
    return (sighandler_t)(uintptr_t)old.sa_handler;
}