Quelle est la différence entre sortie(), _exit() et _Exit() en C?fonctions de sortie en C
Comment puis-je décider lequel utiliser?
Sur bash,
homme 2 sortie
m'a donné la _Exit page (2), tandis que
homme 3 sortie
a donné la page SORTIE (3).
Quelle est la différence entre sortie(), _exit() et _Exit() en C?fonctions de sortie en C
Comment puis-je décider lequel utiliser?
Sur bash,
homme 2 sortie
m'a donné la _Exit page (2), tandis que
homme 3 sortie
a donné la page SORTIE (3).
exit()
se terminant après le nettoyage.
_exit()
se terminant immédiatement après l'appel.
Si vous avez une pile corrompue alors que la fonction exit()
a été appelée, le programme peut se fermer avec une erreur de segmentation, si vous utilisez _exit()
, quitter le programme en mode rapide.
De http://msdn.microsoft.com/en-us/library/6wdz5232.aspx vous avez
exit()
- Appliquer les procédures de terminaison de bibliothèque complète de C, se termine le processus, et se termine avec le code d'état fourni.
_exit()
- Exécute des procédures de terminaison de bibliothèque C rapides, termine le processus et quitte avec le code d'état fourni.
_cexit()
- Effectue des procédures de terminaison de bibliothèque C complètes et renvoie à l'appelant, mais ne termine pas le processus.
_c_exit()
- Exécute des procédures de terminaison de bibliothèque C rapides et renvoie à l'appelant, mais n'arrête pas le processus.
De l'homme:
sortie:
Toutes les fonctions enregistrées avec atexit (3) et on_exit (3) sont appelés, dans l'ordre inverse de leur enregistrement ... Tous stdio ouvert (3) Filières sont rincés et fermés. Les fichiers créés par tmpfile (3) sont supprimés._exit:
La fonction _exit() est similaire à exit (3), mais n'appelle aucune fonction enregistrée avec atexit (3) ou on_exit (3). Si elle vide les tampons d'E/S standard et supprime les fichiers temporaires créés avec tmpfile (3), cela dépend de l'implémentation . D'autre part, _exit() ne fermer les descripteurs de fichiers ouverts ...
1.exit(): c'est le nettoyage du travail comme la fermeture de descripteur de fichier, flux de fichiers et ainsi de suite, 2._exit(): ce n'est pas nettoyer le travail comme la fermeture du descripteur de fichier, le flux de fichiers et ainsi de suite
Ce sont la différence majeure de exit() et _exit().
am i rectifié ur réponse
_exit ferme les descripteurs de fichier. – adf88
Non, le noyau le fait. _exit termine juste le processus. La caractéristique principale de _exit est qu'elle ne fait rien d'autre que dire au noyau de terminer le processus. –
Normative dans C99 sont exit
et _Exit
.
La différence entre les deux est que exit
Réalise également les gestionnaires qui peuvent être enregistrés avec atexit
et ferme les cours d'eau etc alors que _Exit
ne remet pas les atexit
routines et peuvent ou non courants ferment correctement.
_exit
est de POSIX et a des propriétés similaires à _Exit
à la différence qu'il est garanti de fermer les flux correctement. En résumé, chaque fois que vous le pouvez vous devriez utiliser exit
, c'est la façon la plus propre de se terminer.
OK, mais quelle est la différence entre la terminaison complète et rapide? – adf88
s'il vous plaît élaborer ce qui doit être utilisé quand. –
Appelez 'exit()'. Les autres sont des détails d'implémentation, et ne sont généralement pas aussi utiles en dehors de certaines conditions rares lors de la construction de frameworks. – RBerteig