1typedef unsigned int sigset_t ;2typedef struct siginfo siginfo_t ;34struct sigaction {5 union {6 void (*__sa_handler)(int);7 void (*__sa_sigaction)(int, siginfo_t *, void *) ;8 } __sigaction_u ;910 sigset_t sa_mask ;11 int sa_flags ;12};1314static int15_sigaction(int num, struct sigaction *sa, struct sigaction *osa)16{17 return num != 3 ? -1 : 0;18}1920static void21(*signal(int signum, void (* func) (int)))(int)22{23 struct sigaction osa , sa = {24 .__sigaction_u.__sa_handler = func,25 };2627 if (_sigaction(signum, &sa, &osa ) < 0 )28 return ((void (*)(int)) -1) ;2930 return osa.__sigaction_u.__sa_handler ;31}3233static void34sighdl(int signo)35{36}3738int39main(void)40{41 signal(3, sighdl);4243 return 0;44}