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 d'un exe


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut Fermeture d'un exe
    Salut à tous !


    En fait je me pose une question bête:

    je veux faire en sorte que lors de la fermeture brusque du programme lancé, les fichiers temporaires que mon programme génère soient supprimés, et seulement après une fermeture brusque ! Si le programme se déroule sans accro et va jusqu'au bout de mon main, les fichiers ne doivent pas être supprimés.

    Est-ce que c'est possible ? Si oui comment s'y prendre?

    Merci beaucoup !

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je ne pense pas que ce soit possible sous Windows, du moins: Je ne connais pas de moyen de supprimer le flag FILE_FLAG_DELETE_ON_CLOSE d'un fichier.
    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.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    ça veut dire que lors de la fermeture de mon exe, les destructeurs de mes objets instanciés ne sont pas appelés ?

    cob59: je n'ai pas bien saisi l'utilisation du std::signal

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En cas de crash pur (segfault/Access Violation, etc.), non, les destructeurs ne sont pas appelés.
    En cas d'exceptions C++ non-gérée, je ne sais pas trop. Il faudrait tester.
    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.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    En cas de crash pur (segfault/Access Violation, etc.), non, les destructeurs ne sont pas appelés.
    En cas d'exceptions C++ non-gérée, je ne sais pas trop. Il faudrait tester.
    Le cas d'une coupure délibérée du programme par l'utilisateur est considéré comme une exception non gérée ?

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    C'est simple, ils fournissent même un exemple.
    Dans ton cas ça pourrait donner ça :

    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
     
    void maFonction(int signal)
    {
      /* suppression de fichier */
    }
     
    int main()
    {
      // Passage de mon handler à std::signal
      std::signal(SIGINT, maFonction);
      std::signal(SIGABRT, maFonction);
      std::signal(SIGSEGV, maFonction);
     
      int tab[4];
      tab[4] = 42; // Déclenchement d'une interruption SIGSEGV, donc maFonction() est appelée avant de quitter.
     
      return EXIT_SUCCESS;
    }

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    ah ok donc en gros une erreur type SIGABRT sera catchée par ma fonction grâce au Signal ? Et donc quand je coupe mon exe, ma fonction sera appelée ?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par Boumbata Voir le message
    Le cas d'une coupure délibérée du programme par l'utilisateur est considéré comme une exception non gérée ?
    Tu veux dire Ctrl+C ? Sous POSIX, c'est considéré comme un signal SIGTERM.
    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.

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Citation Envoyé par Boumbata Voir le message
    ah ok donc en gros une erreur type SIGABRT sera catchée par ma fonction grâce au Signal ? Et donc quand je coupe mon exe, ma fonction sera appelée ?
    Voilà.
    Pour savoir quelle interruption fait quoi, je t'encourages à consulter la doc, sachant qu'une plateforme peut avoir des signaux spécifiques.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 94
    Points : 122
    Points
    122
    Par défaut
    Ok merci bien je vais voir ça

Discussions similaires

  1. MSB6006 : Fermeture de "LC.exe" avec le code -1
    Par sanaaafkir dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 19/02/2020, 10h05
  2. Problème de non-fermeture de Excel.exe
    Par Birmania dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/02/2011, 11h04
  3. Processus EXCEL;exe actif apres fermeture
    Par jamescook dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2007, 11h49
  4. fermeture de Word.exe
    Par morados dans le forum C#
    Réponses: 3
    Dernier message: 13/07/2007, 14h11
  5. Réponses: 2
    Dernier message: 06/02/2007, 18h12

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