Top Most Signal Handling Objective Questions
Q – 1 What is the output of the below code?
void sig_handler ( int signum) {
printf(“Handled the signaln”);
}
int main() {
int pid;
signal (SIGKILL, sig_handler);
pid = fork();
if (pid==0) {
kill(getppid(), SIGKILL);
exit(0);
} else {
sleep(20);
}
return 0;
}
a) Error child cannot send a SIGKILL signal to parent.
b) Parent goes to the signal handler, prints handled the signal and goes back to sleep
c) Parent goes to the signal handler, prints handled the signal and exits
d) Parent exits without going to the signal handler
Ans- d) Parent exits without going to the signal handler
Q – 2 The kill system call is used to:
a) Send shutdown messages to all by superuser
b) Send a signal to a process
c) Kill processes
d) Stop the processes
Ans- b) Send a signal to a process
Q – 3 Default action of SIGSEGV is:
a) Terminate
b) Core dump
c) Stop
d) Cont
Ans- b) Core dump
Q – 4 Signals are handled using which system call?
a) kill
b) signal
c) both
d) none
Ans- b) signal
Q – 5 When real interval timer expires which signal is generated?
a) SIGINT
b) SIGCHLD
c) SIGKILL
d) SIGALRM
Ans- d) SIGALRM
Q – 6 Another signal that cannot be caught is:
a) SIGPIPE
b) SIGHUP
c) SIGSTOP
d) SIGUSR1
Ans- c) SIGSTOP
Q – 7 What will happen as we press the “Ctrl+c” key after running this program?
#include
#include
void response (int);
void response (int sig_no)
{
printf(“Linuxn”);
}
int main()
{
signal(SIGINT,response);
while(1){
printf(“googlen”);
sleep(1);
}
return 0;
}
a) the string “Linux” will print
b) the process will be terminated after printing the string “Linux”
c) the process will terminate
d) none of the mentioned
Ans- a) the string “Linux” will print
Q – 8 What will happen if we press “Ctrl+c” key two times after running this program?
#include
#include
void response(int);
void response(int sig_no)
{
printf(“Linuxn”);
signal(SIGINT,SIG_DFL);
}
int main()
{
signal(SIGINT,response);
while(1){
printf(“googlen”);
sleep(1);
}
return 0;
}
a) process will terminate in the first time
b) process will terminate in the second time
c) process will never terminate
d) none of the mentioned
Ans- c) process will never terminate
Q – 9 What happens as the SIGINT signal hits the running process of this program?
#include
#include
#include
int main()
{
pid_t child;
signal(SIGINT,SIG_IGN);
child=fork();
switch(child){
case -1:
perror(“fork”);
exit(1);
case 0:
while(1){
printf(“Child Processn”);
sleep(1);
}
break;
default :
while(1){
printf(“Parent Processn”);
pause();
}
break;
}
return 0;
}
a) child process terminates
b) parent process terminates
c) both child and parent process ignores the signal
d) none of the mentioned
Ans- c) both child and parent process ignores the signal
Q – 10 What will print as the SIGINT signal hits the running process of this program?
#include
#include
#include
void response (int);
void response (int sig_no)
{
printf(“%s”,sys_siglist[sig_no]);
}
int main()
{
signal(SIGINT,response);
while(1){
printf(“googlen”);
sleep(1);
}
return 0;
}
a) Interrupt
b) Stop
c) Terminate
d) none of the mentioned
Ans- a) Interrupt
Q – 11 In this program
#include
#include
#include
int main()
{
pid_t child;
child=fork();
switch(child){
case -1 :
perror(“fork”);
exit(1);
case 0 :
while(1){
printf(“Child Processn”);
sleep(1);
}
break;
default :
sleep(5);
kill(child,SIGINT);
printf(“The child process has been killed by the parent processn”);
break;
}
return 0;
}
a) the child process kills the parent process
b) the parent process kills the child process
c) both the processes are killed by each other
d) none of the mentioned
Ans- b) the parent process kills the child process
Q – 12 What is the output of this program?
#include
#include
void response (int);
void response (int sig_no)
{
printf(“%sn”,sys_siglist[sig_no]);
}
int main()
{
pid_t child;
int status;
child = fork();
switch(child){
case -1:
perror(“fork”);
case 0:
break;
default :
signal(SIGCHLD,response);
wait(&status);
break;
}
}
a) this program will print nothing
b) this program will print “Child Exited”
c) segmentation fault
d) none of the mentioned
Ans- b) this program will print “Child Exited”
Q – 13 Which one of the following is not true about this program?
#include
#include
void response (int);
void response (int signo)
{
printf(“%sn”,sys_siglist[signo]);
signal(SIGSEGV,SIG_IGN);
}
int main()
{
signal (SIGSEGV,response);
char *str;
*str = 10;
return 0;
}
a) kernel sends SIGSEGV signal to a process as segmentation fault occurs
b) in this process signal handler will execute only one time of recieving the signal SIGSEGV
c) both (a) and (b)
d) none of the mentioned
Ans- d) none of the mentioned
Q – 14 What is the output of this program?
#include
#include
#include
void response (int);
void response (int sig_no)
{
printf(“%sn”,sys_siglist[sig_no]);
printf(“This is singal handlern”);
}
int main()
{
pid_t child;
int status;
child = fork();
switch (child){
case -1 :
perror(“fork”);
exit (1);
case 0 :
kill(getppid(),SIGKILL);
printf(“I am an orphan process because my parent has been killed by men”);
printf(“Handler failedn”);
break;
default :
signal(SIGKILL,response);
wait(&status);
printf(“The parent process is still aliven”);
break;
}
return 0;
}
a) the child process kills the parent process
b) the parent process kills the child process
c) handler function executes as the signal arrives to the parent process
d) none of the mentioned
Ans- a) the child process kills the parent process
Q – 15 This program will print:
#include
#include
#include
void response (int);
void response (int sig_no)
{
printf(“%s is workingn”,sys_siglist[sig_no]);
}
int main()
{
alarm(5);
sleep(50);
printf(“googlen”);
signal(SIGALRM,response);
return 0;
}
a) “google”
b) “Alarm clock”
c) nothing
d) none of the mentioned
Ans- b) “Alarm clock”
Q – 16 What happnes as the signal SIGINT hits the current process in the program?
#include
#include
void response (int);
void response (int sig_no)
{
printf(“Linuxn”);
}
int main()
{
struct sigaction act;
act.sa_handler = response;
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(SIGINT,&act,0);
while(1){
printf(“googlen”);
sleep(1);
}
return 0;
}
a) the process terminates
b) the string “Linux” prints
c) the string “Linux” prints and then process terminates
d) none of the mentioned
Ans- b) the string “Linux” prints
Q – 17 Which of the following signal cannot be handled or ignored?
a) SIGINT
b) SIGCHLD
c) SIGKILL
d) SIGALRM
Ans- c) SIGKILL
Q – 18 Which signal is sent when the Child process terminates?
a) SIGINIT
b) SIGKILL
c) SIGSTOP
d) SIGCHLD
Ans- b) SIGKILL
Q – 19 Which signal is generated when we press ctrl-Z?
a) SIGKILL
b) SIGSTOP
c) SIGABRT
d) SIGINT
Ans- d) SIGINT
Q – 20 If a signal is received by a process, when will it be processed?
a) It is processed immediately
b) It is processed when process is switching to kernel mode
c) It is processsed in the next timeslice given to the process
Ans- b) It is processed when process is switching to kernel mode
Q – 21 Which signal is generated when we press control-C?
a) SIGINT
b) SIGTERM
c) SIGKILL
d) SIGSEGV
Ans- a) SIGINT