Я пытаюсь написать программу, которая перехватывает Ctrl ^ C, используя sigaction, а затем завершает дочерний процесс форка.
Код:
static void usrHandler(int sig, siginfo_t * si, void * ignore) {
printf("Interrupt Worked");
}
int main(int argc, char * argv[]) {
struct sigaction sa;
sa.sa_flags = SA_SIGINFO;
sigemptyset( & sa.sa_mask);
sa.sa_sigaction = usrHandler;
sigaction(SIGINT, & sa, NULL);
int currentFile = 1;
int fd;
int forkChild;
forkChild = fork();
if (forkChild == 0) {
sleep(100);
} else if (forkChild > 0) {
sa.sa_sigaction = SIG_IGN;
sigaction(SIGUSR1, & sa, NULL);
}
}
Я попытался удалить весь ненужный код для моего примера. Почему-то я не могу заставить работать прерывание, когда нажимаю Ctrl ^ C. В конце концов я хотел бы иметь возможность закрыть ребенка и продолжить в родителя. Я что-то здесь не так делаю?