Partage
  • Partager sur Facebook
  • Partager sur Twitter

Différences des arrêts

abort/_exit/exit/return 0.

    24 février 2006 à 20:54:10

    Bonjour tout le monde.

    En me renseignant sur la directive #pragma, j'ai trouvé ceci :

    Citation : http://www.ann.jussieu.fr/courscpp/Sections/Sect10-A6.html

    Les fonctions de sortie ne sont pas exécutées si le programme est interrompu par _exit ou abort, mais elles le sont s’il est interrompu par exit ou en cas de terminaison normale (fin de main).



    Je me suis précipité (vous pensez bien :) ) d'essayer tout ça. Ca a parfaitement marché.

    Mais maintenant quelqu'un saurait-il, par un hasard pour le moins hasardeux, s'il existe une différence précise (portabilité, libération de mémoire... ) entre ces 4 fonctions d'arrêts, à savoir :

    abort;
    _exit;

    exit;
    return 0;

    ... mis à part le fait que les fonctions abort et _exit annule les `` #pragma exit ".

    Merci à vous tous !

    ++
    • Partager sur Facebook
    • Partager sur Twitter
      24 février 2006 à 20:59:36

      _exit() n'est pas standard.
      Et exit() permet de retourner un code d'erreur de son choix, contrairement à abort()
      Et pour en savoir plus sur abort() il y a de la doc sur internet : http://www.unix.org/version2/sample/abort.html
      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2006 à 21:21:46

        abort() en fait ça envoit un signal à l'appli qui est censée abandonner. A priori mais je ne suis pas sûr parce que j'ai jamais réussi à trouver quelque chose d'explicite sur ça ; tu dois pouvoir intercepter le signal et faire un traitement mais c'est ambiguë parce que abort ne doit pas retourner en principe...

        Ah et _Exit existe en C99 et fait ce que tu veux avec _exit. _exit c'est Unix et _Exit c'est C99;
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 février 2006 à 21:39:31

          La différence c'est principalement que abort est une terminaison anormale (comme lors d'un plantage par exemple) alors que exit est une fin normale (comme lors du retour de main), éventuellement avec un code d'erreur (du même genre que le return dans main).

          Au niveau libération mémoire, il me semble que les OS modernes gèrent bien ça, mais évidement c'est toujours mieux si on fait tout proprement :D
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2006 à 8:47:15

            Ok merci beaucoup à tous ! J'en espèrais pas tant. :)

            Elentar merci aussi pour le lien j'avais pas cherché en anglais :-° ...
            • Partager sur Facebook
            • Partager sur Twitter

            Différences des arrêts

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown