IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Fermeture programme en console


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut Fermeture programme en console
    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.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Par défaut
    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

    Ce ptit lien devrait t'aider

    http://publications.gbdirect.co.uk/c..._handling.html

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut
    Peux tu m'en dire plus stp?

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    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.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Par défaut
    Gloups j'ai fait un édit trop tard

    http://publications.gbdirect.co.uk/c..._handling.html

    Tu travailles sous linux ou sous windows?

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut
    Sous xp, mais vous pourriez me faire un tout petit exemple svp ?

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut
    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).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    }
    J'ai essayé de le modifié un peu à la vue de la page cité plus haut.

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    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)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut
    Ok merci, meme si sa m'ennuie beaucoup.

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    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...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 240
    Par défaut
    Peux tu m'en dire plus stp.
    Mais de toute façon j'ai fait un programme avec l'api win donc sa marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. bloquer la fermeture d'une console
    Par altano dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 24/01/2008, 18h01
  2. Fermeture de la console
    Par guitoux1 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 30/01/2007, 11h20
  3. Réponses: 10
    Dernier message: 09/11/2006, 17h07
  4. Faire un programme sans console ni fenêtre
    Par Pierre.g dans le forum Windows
    Réponses: 10
    Dernier message: 28/08/2006, 12h57
  5. [debutant]Ralentir la fermeture de la console
    Par jcaspar dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/04/2006, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo