Send SIGINT (ctrl-c) to process while it is waiting for input. What happens? 2 What happens if you set sa_flags to SA_RESTART ? 3 Read about above flag in sigaction() man page and explain how it changed the behavior of the program (from case 1 to case 2).
The code is below and use the code to answer the 3 questions that is attached as an image:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>
void sigint_handler(int sig)
{
(void)sig; // remove unused variable warning
write(0, "Ahhh! SIGINT!\n", 14);
}
int main(void)
{
void sigint_handler(int sig); /* prototype */
char s[200];
struct sigaction sa;
sa.sa_handler = sigint_handler;
sa.sa_flags = 0; // or SA_RESTART;
sigemptyset(&sa.sa_mask);
// if (sigaction(SIGINT, &sa, NULL) == -1) {
// perror("sigaction");
// exit(1);
// }
printf("Enter a string:\n");
if (fgets(s, sizeof s, stdin) == NULL)
perror("fgets");
else
printf("You entered: %s\n", s);
return 0;
}


Trending now
This is a popular solution!
Step by step
Solved in 3 steps









