预期control-c只能工作一次。处理赋值和本节说明对control-c的多次调用都会失败,从我读过的内容中我理解这是因为需要在处理程序中重新启用信号。这是我的设置。
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void signalHandler(int);
int main(void) {
signal(SIGINT, signalHandler);
int i;
for (i = 0; i < 5; i++) {
printf("Sleep#%d\n", (i+1));
sleep(1);
fflush(stdout);
}
printf("Program Exiting");
return 0;
}
void signalHandler(int signal) {
printf("Jumped to interrupt handler\n");
fflush(stdout);
}
从我读过的内容和我期望发生的事情 - 当给出control-c命令时,应该调用signalHandler函数,printf()语句应该执行,后续的control-c命令应该不再响应,因为我没有重新启用信号。然而,这种情况并非如此。收到每个control-c I输入。我正在使用Clang在Cygwin里面运行它。是否存在隐式重新启用信号的默认行为?