Write a C program that doesn’t terminate when Ctrl+Z is pressed. It prints a message “Cannot be suspended using Ctrl+Z” and continues execution.
We can use Unix signal for this. When Ctrl+Z is pressed, SIGTSTP signal is generated.
SIGTSTP signal is sent to a process by its controlling terminal to request it to stop (terminal stop). We can catch this signal and run our own defined signal.
The standard C library function signal() can be used to set up a handler for any of the above signals.
// C program that does not suspend when // Ctrl+Z is pressed #include <stdio.h> #include <signal.h> // Signal Handler for SIGTSTP void sighandler( int sig_num)
{ // Reset handler to catch SIGTSTP next time
signal (SIGTSTP, sighandler);
printf ( "Cannot execute Ctrl+Z\n" );
} int main()
{ // Set the SIGTSTP (Ctrl-Z) signal handler
// to sigHandler
signal (SIGTSTP, sighandler);
while (1)
{
}
return 0;
} |
Output:
Cannot execute Ctrl+Z