Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




24.6.1 Signaling 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; 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. */
     tstp_handler (int sig)
       signal (SIGTSTP, SIG_DFL);
       /* Do cleanup actions here. */
       raise (SIGTSTP);
     /* When the process is continued again, restore the signal handler. */
     cont_handler (int sig)
       signal (SIGCONT, cont_handler);
       signal (SIGTSTP, tstp_handler);
     /* Enable both handlers during program initialization. */
     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.

  Published under the terms of the GNU General Public License Design by Interspire