我正在尝试编写一个使用 sigaction 拦截 Ctrl^C 的程序,然后终止 fork 的子代。
代码:
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 时,我无法让中断工作。最终,我希望能够关闭孩子并继续在父母中。我在这里做错了吗?