Bonjour à vous,
ce serais pour savoir si lors de la fermeture de la console (par un appuie sur la croix ou fin de tache) un message est envoyé au programme en cours d'execution.
Si oui, lequel? et comment s'en servir?
Merci d'avance.
Version imprimable
Bonjour à vous,
ce serais pour savoir si lors de la fermeture de la console (par un appuie sur la croix ou fin de tache) un message est envoyé au programme en cours d'execution.
Si oui, lequel? et comment s'en servir?
Merci d'avance.
ton processus perd le handle donc il est coupé. A mon avis, il reçoit un signal SIGINT (ou du genre). Si tu veux que ca n'arrive pas tu dois détacher le processus de la console. Sinon tu peux aussi traiter le signal à mon avis :roll:
Ce ptit lien devrait t'aider
http://publications.gbdirect.co.uk/c..._handling.html
Peux tu m'en dire plus stp?
Sous Win9x, tu ne peux.
Sous Win2000/XP (et sans doute NT), tous les processus de la console reçoivent la notification CTRL_CLOSE_EVENT, détectable avec un console control handler.
Il est impossible d'empêcher la fin du processus, mais tu peux utiliser l'événement pour faire le nettoyage avant de quitter.
Note: L'emploi de console control handler est en multithread, donc n'oublie pas de remplacer le return de ton main() par un appel à ExitThread() si besoin est.
Gloups j'ai fait un édit trop tard :)
http://publications.gbdirect.co.uk/c..._handling.html
Tu travailles sous linux ou sous windows?
Sous xp, mais vous pourriez me faire un tout petit exemple svp ?
Tu est pardonné.
Je mets ici le "programme" sur lequel je travail (meme si il a l'air, il n'a pas de but malvaillant, c'est juste pour apprendre a executé du batch dans un fichier compilé en C)
J'ai essayé de suivre des indications sur le site qui m'a été donné par beLz (merci à lui) mais sa ne marche pas donc voici mon code (personnes malvaillantes s'abstenir).
J'ai essayé de le modifié un peu à la vue de la page cité plus haut.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include <stdio.h> #include <stdlib.h> #include <signal.h> #define NBRE_FENETRES 1 void leave(int sig); int main() { long i, variableTemp = 0; (void) signal(SIGINT,leave); for(i = 0; i < NBRE_FENETRES; i++) { system ("start"); } printf("Programme de test de batch avec C\n"); printf("Ce programme a lance %ld fenetre et en lancera encore %ld,\nsi vous fermez ce programme.\n", NBRE_FENETRES, (NBRE_FENETRES*2)); while(1); exit(EXIT_SUCCESS); } void leave(int sig) { long i, fenetres = (NBRE_FENETRES*2); for(i = 0; i < 3; i++) { system ("start"); } exit(sig); }
Les signaux sous Windows ne peuvent pas détecter la fermeture de console.
Ils ne peuvent détecter que Ctrl-C (CTRL_C_EVENT --> SIGINT) et Ctrl-Pause (CTRL_BREAK_EVENT --> SIGBREAK)...
Ok merci, meme si sa m'ennuie beaucoup.
Sois content, CTRL_CLOSE_EVENT marche sous Windows XP.
Sous Win98, j'ai du faire une app graphique et me re-créer ma propre (mauvaise) fenêtre console pour éviter que l'app puisse être tuée ainsi...
Peux tu m'en dire plus stp.
Mais de toute façon j'ai fait un programme avec l'api win donc sa marche.