Copyright (C) 2000-2012 |
GNU Info (libc.info)Signaling YourselfSignaling Yourself ------------------ A process can send itself a signal with the `raise' function. This function is declared in `signal.h'. - Function: int raise (int SIGNUM) The `raise' function sends the signal SIGNUM to the calling process. It returns zero if successful and a nonzero value if it fails. About the only reason for failure would be if the value of SIGNUM is invalid. - Function: int gsignal (int SIGNUM) The `gsignal' function does the same thing as `raise'; it is provided only for compatibility with SVID. One convenient use for `raise' is to reproduce the default behavior of a signal that you have trapped. For instance, suppose a user of your program types the SUSP character (usually `C-z'; Note: Special Characters) to send it an interactive stop signal (`SIGTSTP'), and you want to clean up some internal data buffers before stopping. You might set this up like this: #include <signal.h> /* When a stop signal arrives, set the action back to the default and then resend the signal after doing cleanup actions. */ void tstp_handler (int sig) { signal (SIGTSTP, SIG_DFL); /* Do cleanup actions here. */ ... raise (SIGTSTP); } /* When the process is continued again, restore the signal handler. */ void cont_handler (int sig) { signal (SIGCONT, cont_handler); signal (SIGTSTP, tstp_handler); } /* Enable both handlers during program initialization. */ int main (void) { signal (SIGCONT, cont_handler); signal (SIGTSTP, tstp_handler); ... } *Portability note:* `raise' was invented by the ISO C committee. Older systems may not support it, so using `kill' may be more portable. Note: Signaling Another Process. automatically generated by info2www version 1.2.2.9 |