11
votes

Que se passe-t-il si vous quittez un programme sans faire FLOSE ()?

Question:

Que se passe-t-il si je quitte le programme sans fermeture de fichiers?

Y a-t-il des mauvaises choses qui se passent (par exemple, une matrice de descripteur de fichier de niveau d'exploitation n'est pas libérée ..?)

et à la réponse la même dans les deux cas

  • PROGRAMME PROGRAMMÉE
  • Crash inattendu

    Exemples de code:

    avec une sortie programmée, je veux dire quelque chose comme ceci: xxx

    avec un crash inattendu, je veux dire quelque chose comme ceci: xxx

    ps

    Si la réponse est la programmation de la langue dépendante, j'aimerais savoir à propos de C et C ++.

    si le La réponse est dépend du système d'exploitation alors je suis intéressé par le comportement Linux et Windows.


0 commentaires

3 Réponses :


4
votes

Les rangements du système d'exploitation pour vous. C'est comme aller à un ami - il est poli de fermer la porte de la salle de bain et de ne pas les faire faire pour vous.


1 commentaires

Grande analogie haha



10
votes

Cela dépend de la façon dont vous sortez. Dans des circonstances contrôlées (via Quitter () ou un retour de principal () ), les données des mémoires tampons (de sortie) seront rinçues et les fichiers fermés de manière ordonnée. Autres ressources que le processus avaient également été libérés.

Si votre programme se bloque hors de contrôle ou si elle appelle l'une des variantes _exit () ou _exit () fonctionne, alors le système nettoiera toujours des descripteurs de fichiers ouverts et libérera d'autres ressources, mais les tampons gagnés " t être rincé, etc.


0 commentaires

2
votes

Toutes les poignées appartenant à votre processus seront nettoyées. Cependant, tout objet "nommé" Les objets du noyau comme des tuyaux nommés et d'autres vont coller.


0 commentaires