raise() function in C++ - GeeksforGeeks

18 Aug, 2018
csignal header file declared the function raise() to handle a particular signal. Signal learns some unusual behavior in a program, and calls the signal handler. It is implemented to check if the default handler will get called or it will be ignored.
Syntax:
int raise ( int signal_ )
Parameter: The function accepts a single parameter sig which specifies the signal which is artificially raised. It can take any of the 6 C standard signals.Defined Signal Types
SIGILL
SIGINT
SIGSEGV
SIGTERM
SIGABRT
SIGFPE
Return Value: It return a nonzero value with no error in signal else it returns zero. The function returns different nonzero elements with different defined signals.
Below programs illustrate the above method:Program 1:
// C++ program to illustrate the// raise() function when SIGABRT is passed#include <csignal>#include <iostream>using namespace std;  sig_atomic_t s_value = 0;void handle(int signal_){    s_value = signal_;}  int main(){    signal(SIGABRT, handle);    cout << "Before called Signal = " << s_value << endl;    raise(SIGABRT);    cout << "After called Signal = " << s_value << endl;    return 0;}
Before called Signal = 0
After called Signal = 6

Program 2:
// C++ program to illustrate the// raise() function when SIGINT is passed#include <csignal>#include <iostream>using namespace std;  sig_atomic_t s_value = 0;void handle(int signal_){    s_value = signal_;}  int main(){    signal(SIGINT, handle);    cout << "Before called Signal = " << s_value << endl;    raise(SIGINT);    cout << "After called Signal = " << s_value << endl;    return 0;}
Before called Signal = 0
After called Signal = 2

Program 3:
// C++ program to illustrate the// raise() function when SIGTERM is passed#include <csignal>#include <iostream>using namespace std;  sig_atomic_t s_value = 0;void handle(int signal_){    s_value = signal_;}  int main(){    signal(SIGTERM, handle);    cout << "Before called Signal = " << s_value << endl;    raise(SIGTERM);    cout << "After called Signal = " << s_value << endl;    return 0;}
Before called Signal = 0
After called Signal = 15

Program 4:
// C++ program to illustrate the// raise() function when SIGSEGV is passed#include <csignal>#include <iostream>using namespace std;  sig_atomic_t s_value = 0;void handle(int signal_){    s_value = signal_;}  int main(){    signal(SIGSEGV, handle);    cout << "Before called Signal = " << s_value << endl;    raise(SIGSEGV);    cout << "After called Signal = " << s_value << endl;    return 0;}
Before called Signal = 0
After called Signal = 11

Program 5:
// C++ program to illustrate the// raise() function when SIGFPE is passed#include <csignal>#include <iostream>using namespace std;  sig_atomic_t s_value = 0;void handle(int signal_){    s_value = signal_;}  int main(){    signal(SIGFPE, handle);    cout << "Before called Signal = " << s_value << endl;    raise(SIGFPE);    cout << "After called Signal = " << s_value << endl;    return 0;}
Before called Signal = 0
After called Signal = 8

C-Library
CPP-Library
C Language
C++
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
TCP Server-Client implementation in C
Exception Handling in C++
Multithreading in C
'this' pointer in C++
UDP Server-Client implementation in C
Vector in C++ STL
Inheritance in C++
Initialize a vector in C++ (6 different ways)
Socket Programming in C/C++
Map in C++ Standard Template Library (STL)