summaryrefslogtreecommitdiff
path: root/lib/libc/signal/signal.c
blob: c2f578eb324706f87fc9fb7cfcbcf6c54b1df89b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <signal.h>

void (*signal(int sig, void (*func)(int)))(int)
{
	struct sigaction act, oact;

	act.sa_handler = func;
	act.sa_flags = SA_RESTART;

	if (sigaction(sig, &act, &oact) < 0)
		return SIG_ERR;

	return oact.sa_handler;
}