Il existe en général deux niveaux de mise en mémoire tampon impliqués:
- Des tampons internes
- Système d'exploitation tampons
L'intérieur des tampons tampons créés par le moteur d'exécution/bibliothèque/la langue que vous êtes à la programmation contre et est destiné à accélérer les choses en évitant les appels système pour chaque écriture. Au lieu de cela, lorsque vous écrivez à un objet fichier, vous écrivez dans sa mémoire tampon, et chaque fois que le tampon est plein, les données sont écrites dans le fichier, à l'aide des appels système.
Cependant, en raison du système d'exploitation tampons, cela ne peut pas dire que les données sont écrites sur le disque. Il peut tout simplement dire que les données sont copiées de la mémoire gérée par votre moteur d'exécution dans les tampons maintenu par le système d'exploitation.
Si vous écrivez quelque chose, et il se termine dans la mémoire tampon (seulement), et que le courant est coupé à votre machine, et que les données n'est pas sur le disque lorsque l'ordinateur s'éteigne.
Donc, afin de les aider avec cela, vous avez l' flush
et fsync
méthodes, sur leurs objets respectifs.
La première, flush
, tout simplement écrire toutes les données qui s'éternise dans un programme de la mémoire tampon de la taille réelle du fichier. Typiquement, cela signifie que les données seront copiées à partir du programme de la mémoire tampon pour le système d'exploitation de la mémoire tampon.
Précisément ce que cela signifie, c'est que si un autre processus a ce même fichier ouvert en lecture, il sera en mesure d'accéder aux données que vous venez vidé le fichier. Toutefois, cela ne signifie pas nécessairement qu'il a été "définitivement" stocké sur le disque.
Pour ce faire, vous devez appeler l' os.fsync
méthode qui garantit à tous les système d'exploitation tampons sont synchronisés avec les périphériques de stockage, ils sont, en d'autres termes, cette méthode de copie des données à partir du système d'exploitation tampons sur le disque.
En général, vous n'avez pas besoin de s'embêter avec la méthode, mais si vous êtes dans un scénario où la paranoïa sur ce qui se termine effectivement en place sur le disque est une bonne chose, vous devez faire deux appels, comme indiqué.