COHERENT manpages

This page displays the COHERENT manpage for raise() [Let a process send a signal to itself].

List of available manpages
Index


raise() -- General Function (libc)

Let a process send a signal to itself
#include <signal.h>
int raise(signal)
int signal;

raise() sends  signal to the program that is  currently being executed.  If
called from within  a signal handler, the processing of  this signal may be
deferred until the signal handler exits.

Example

This example sets a signal, raises  it itself, then allows the signal to be
raised interactivly.  Finally, it clears the signal and exits.

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void gotcha(void);

void
setgotcha(void)
{
    if(signal(SIGINT, gotcha) == SIG_ERR) {
        printf("Couldn't set signal\n");
        abort();
    }
}

void
gotcha(void)
{
    char buf[10];

    printf("Do you want to quit this program? <y/n> ");
    fflush(stdout);
    gets(buf);

    if(tolower(buf[0]) == 'y')
        abort();

    setgotcha();
}

main(void)
{
    char buf[80];

    setgotcha();
    printf("Set signal; let's pretend we get one.\n");
    raise(SIGINT);

    printf("Returned from signal\n");
    printf("Try typing <ctrl-c> to signal <enter> to exit");
    fflush(stdout);
    gets(buf);

    if(signal(SIGINT, SIG_DFL) == SIG_ERR) {
        printf("Couldn't lower signal\n");
        abort();
    }

    printf("Signal lowered\n");
    exit(EXIT_SUCCESS);
}

See Also

libc,
signal(),
signal.h
ANSI Standard, §7.7.2.1