Node:Signaling Yourself, Next:Signaling Another Process, Up:Generating Signals
A process can send itself a signal with the raise function.  This
function is declared in signal.h.
| int raise (int signum) | Function | 
| The raisefunction 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. | 
| int gsignal (int signum) | Function | 
| The gsignalfunction does the same thing asraise; 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; see 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.  See Signaling Another Process.