Я не понимаю, почему, когда я запускаю этот код, а затем использую прерывание control + C, программа немедленно закрывается, но файл журнала показывает, что «программа прошла успешно». Как я могу напечатать правильное сообщение?Обработка сигналов в C: программа продолжает выполнение даже после прерывания
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
static volatile int globalFlag = 0;
void handler();
int main()
{
FILE* log;
log = fopen("log.txt", "a");
signal(SIGINT, handler);
while(globalFlag == 0){
sleep(20);
fprintf(log, "program ran successfully\n");
fclose(log);
return 0;
}
fprintf(log, "program shut by signal\n");
fclose(log);
return -1;
}
void handler()
{
globalFlag = 1;
}
Спасибо, это работает. Кажется, я неправильно понял, что делает контроль + C. – Mari