Write a C program that doesn’t terminate when Ctrl+C is pressed. It prints a message “Cannot be terminated using Ctrl+c” and continues execution.
We can use signal handling in C for this. When Ctrl+C is pressed, SIGINT signal is generated, we can catch this signal and run our defined signal handler. C standard defines following 6 signals in signal.h header file.
SIGABRT – abnormal termination.
SIGFPE – floating point exception.
SIGILL – invalid instruction.
SIGINT – interactive attention request sent to the program.
SIGSEGV – invalid memory access.
SIGTERM – termination request sent to the program.
Additional signals are specified Unix and Unix-like operating systems (such as Linux) defines more than 15 additional signals. See http://en.wikipedia.org/wiki/
The standard C library function signal() can be used to set up a handler for any of the above signals.
Output: When Ctrl+C was pressed two times
Cannot be terminated using Ctrl+C Cannot be terminated using Ctrl+C
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- C program that does not suspend when Ctrl+Z is pressed
- Does C++ compiler create default constructor when we write our own?
- Why variable name does not start with numbers in C ?
- Why does sizeof(x++) not increment x in C?
- How does a C program executes?
- Write a C program to print "Geeks for Geeks" without using a semicolon
- Write a C program that won't compile in C++
- Write a program that produces different results in C and C++
- Write a URL in a C++ program
- Write a C program that displays contents of a given file like 'more' utility in Linux
- Write a C program to print "GfG" repeatedly without using loop, recursion and any control structure?
- C program to write an image in PGM format
- Does C support function overloading?
- How does "void *" differ in C and C++?
- How does free() know the size of memory to be deallocated?
- When does compiler create default and copy constructors in C++?
- Does overloading work with Inheritance?
- How does Duff's Device work?
- What does buffer flush means in C++ ?
- Does STL priority queue allow duplicate values?
Improved By : nidhi_biet