1 inline SigFunc * SignalRestart(int signo, SigFunc *func)
3 struct sigaction new_handl, old_handl;
4 new_handl.sa_handler = func; /* set signal handler */
5 new_handl.sa_flags = SA_RESTART; /* restart system call */
6 /* clear signal mask: no signal blocked during execution of func */
7 if (sigemptyset(&new_handl.sa_mask)!=0){ /* initialize signal set */
10 /* change action for signo signal */
11 if (sigaction(signo, &new_handl, &old_handl)){
14 return (old_handl.sa_handler);