Application console Windows – signal pour la clôture de l’événement

Dans l’application Windows, vous pouvez appuyer sur ctrl+c en utilisant:

 #include  #include  void SigInt_Handler(int n_signal) { printf("interrupted\n"); } int main(int n_arg_num, const char **p_arg_list) { signal(SIGINT, &SigInt_Handler); getchar(); // wait for user intervention } 

Cela fonctionne bien, sauf que cela ne fonctionne pas du tout si l’utilisateur appuie sur la croix × qui ferme la fenêtre de la console. Y a-t-il un signal pour ça?

La raison pour laquelle j’ai besoin de ça, c’est que j’ai cette application CUDA qui a tendance à faire planter l’ordinateur si elle est fermée pendant le calcul. Le code est une sorte de multiplateforme, je préférerais donc utiliser des signaux plutôt que SetConsoleCtrlHandler . Y a-t-il un moyen?

Le bon est SIGBREAK , vous pouvez l’essayer avec:

 #include  #include  void SigInt_Handler(int n_signal) { printf("interrupted\n"); exit(1); } void SigBreak_Handler(int n_signal) { printf("closed\n"); exit(2); } int main(int n_arg_num, const char **p_arg_list) { signal(SIGINT, &SigInt_Handler); signal(SIGBREAK, &SigBreak_Handler); getchar(); // wait for user intervention return 0; } 

À la fermeture de la fenêtre de la console, le programme affichera "closed" et renverra 2.