EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

Signal in C++

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » Signal in C++

Signal in C++

Introduction to Signal in C++

Signals are the interrupts that can cause an unusual pause to any ongoing activity. In terms of OS, UNIX platforms C++ signals are kind of interruption that stops an ongoing process or thread in middle of the running process. But on the other hand, C++ signals also have the capacity to catch the interruptions at any point of time and to reach a conclusion to solve the problem causing the pause while execution of the program. This Signal() function provided by the signal library can trap the interruption or the exception and can provide ways to resolve.

Syntax:

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Signal(signal registered, signal handler)

The signal function in C++ comprises of two parameters where first parameter represents the signal number and second parameter represents the pointer which points to a signal handling the function.

Note: We must always keep in mind that signal function must first register with the signal registered parameter with signal and then it must get associate with the signal handling function. Signal handling function should be of void type.

How Signal works in C++?

  • There are two arguments which are passed in the signal function and these two arguments play a very important role in a way that the registered signal argument will get registered with the signal function and the second argument of signal function which is signal handler will try to catch all the exceptions and interrupted signals using signal handler.
  • Once compiled they will produce some output and then it is needed to create that interruption and that visible difference will be present which means the catch signal will able to print those caught interruption.
  • Followed with this will also include one more function namely raise () function which considers the first argument which is the integer signal number and can send any of the defined signals. It is possible to raise a function to generate necessary signal.

List of Signal in C++

Given below are the list:

Signals 

Operation Description 

SIGINT An active signal gets generated for the receiver end.
SIGTERM A request is sent to the program for termination from the normal execution.
SIGBUS Notifies a bus error which accessing an invalid address.
SIGILL It detects an illegal command.
SIGALRM This signal Indicates expiration of timer and is mostly used by alarm function.
SIGABRT Abnormally a program gets terminated.
SIGSTOP A process gets stopped, ignored, blocked and handled by this signal.
SIGSEGV Storage with an invalid access.
SIGFPE It recognizes any mathematically incorrect or overflow operations.
SIGUSR1, SIGUSR2 Signals with user defined.
SIGHUP It tells the user that the terminal is disconnected. A type of signal used to report the termination of the controlling process.
SIGQUIT A core dump gets generated and used to terminate the process.
SIGTRAP Trace all the traps.
SIGCONT The signal is sent to the process for making a continued process.

Examples of Signal in C++

Given below are the examples:

Example #1

This program illustrates the interruption getting created using signal handler and with SIGABRT method once it reaches in infinite loop gets aborted after exiting.

Code:

#include <iostream>
#include <csignal>
using namespace std;
void signal_handler( int signl_no ) {
cout << "The interrupt signal is (" << signl_no << "). \n";
exit(signl_no);
}
int main () {
signal(SIGABRT, signal_handler);
while(true)
cout << "Hello educba learn infinite..." << endl;
return 0;
}

Output:

signal in c++ 1

Example #2

This program illustrates the SIGINT signal functionality within the signal function.

Code:

#include <iostream>
#include <csignal>
using namespace std;
void signal_handler( int signl_num ) {
cout << "Interrupt signal is (" << signl_num << ").\n";
exit(signl_num);
}
int main () {
int count = 0;
signal(SIGINT, signal_handler);
while(++count) {
cout << "Hello educba battle ground..." << endl;
if( count == 5 )
raise(SIGINT);
}
return 0;
}

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (4,890 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)

Output:

signal in c++ 2

Example #3

This program illustrates the SIGTERM signal within the signal function().

Code:

#include <iostream>
#include <csignal>
using namespace std;
void signal_handler( int signl_num ) {
cout << "Interrupt signal is (" << signl_num << ").\n";
exit(signl_num);
}
int main () {
int count = 0;
signal(SIGTERM, signal_handler);
while(++count) {
cout << "Hello educba battle ground..." << endl;
if( count == 5 )
raise(SIGTERM);
}
return 0;
}

Output:

SIGTERM

Example #4

This program illustrates the SIGBUS signal within the signal function().

#include <iostream>
#include <csignal>
using namespace std;
void signal_handler( int signl_num ) {
cout << "Interrupt signal is (" << signl_num << ").\n";
exit(signl_num);
}
int main () {
int count = 0;
signal(SIGBUS, signal_handler);
while(++count) {
cout << "Hello educba battle ground..." << endl;
if( count == 5 )
raise(SIGBUS);
}
return 0;
}

Output:

SIGBUS

Example #5

This program illustrates the SIGILL signal within the signal function().

Code:

#include <iostream>
#include <csignal>
using namespace std;
void signal_handler( int signl_num ) {
cout << "Interrupt signal is (" << signl_num << ").\n";
exit(signl_num);
}
int main () {
int count = 0;
signal(SIGILL, signal_handler);
while(++count) {
cout << "Hello educba battle ground..." << endl;
if( count == 5 )
raise(SIGILL);
}
return 0;
}

Output:

SIGILL

Example #6

This program illustrates the SIGALRM signal within the signal function().

Code:

#include <iostream>
#include <csignal>
using namespace std;
void signal_handler( int signl_num ) {
cout << "Interrupt signal is (" << signl_num << ").\n";
exit(signl_num);
}
int main () {
int count = 0;
signal(SIGALRM, signal_handler);
while(++count) {
cout << "Hello educba battle ground..." << endl;
if( count == 5 )
raise(SIGALRM);
}
return 0;
}

Output:

SIGALRM

Example #7

This program illustrates the SIGSEGV signal within the signal function().

Code:

#include <iostream>
#include <csignal>
using namespace std;
void signal_handler( int signl_num ) {
cout << "Interrupt signal is (" << signl_num << ").\n";
exit(signl_num);
}
int main () {
int count = 0;
signal(SIGSEGV, signal_handler);
while(++count) {
cout << "Hello educba battle ground..." << endl;
if( count == 5 )
raise(SIGSEGV);
}
return 0;
}

Output:

signal in c++ 7

Note: These programs can be made uniform and runnable by providing different signal functions within the same function for better understanding.

Conclusion

Signal in C++ plays a pivotal role in terms of handling of the unexpected interruptions that occur at the time of execution of program during run time. These can be smoothly handled by the signal function as it acts as an indicator for the user with the capability of catching the faults within the program execution.

Recommended Articles

This is a guide to Signal in C++. Here we discuss the introduction to signal in c++ along with list of signals and respective examples. You may also have a look at the following articles to learn more –

  1. 2D Arrays in C++
  2. C++ Literals
  3. Nested if in C++
  4. C++ begin()

All in One Software Development Bundle (600+ Courses, 50+ projects)

600+ Online Courses

50+ projects

3000+ Hours

Verifiable Certificates

Lifetime Access

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Functions
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training Course Learn More