В настоящее время я изучаю сигналы на C и имею небольшую программу, которая, как предполагается, не завершается при получении сигнала SIGINT
с использованием sigaction()
.
Код, написанный ниже, однако, завершается, даже если он выглядит хорошо для меня.Может быть, мне чего-то не хватает.Кто-то видит, почему это все еще заканчивается?
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void handle() { printf("%s%d%s", "I won't die....: ", getpid(), "\n"); }
int main() {
struct sigaction sa;
sa.sa_handler = handle;
int k = 0;
sigaction(SIGINT, &sa, NULL);
// signal(SIGINT, handle); //signal works just fine
while (k < 60) {
printf("%s", "sleeping... \n");
sleep(1);
k = k + 1;
}
}
Дополнительная информация: Моя ОС - Windows, однако я компилирую и запускаю программу в Bash подсистемы Linux.