Simplificado, quando você cria um arquivo de dados, o sistema operacional deve fazer estas três coisas:
- Aloque os blocos necessários para conter os dados.
- Escreva zeros nesses blocos ou faça com que os zeros sejam apresentados se você tentar lê-los.
- Escreva seus dados para os blocos alocados.
O passo 2 é um requisito devido à segurança do sistema. Os blocos alocados podem ter contido anteriormente os dados de outra pessoa e seria uma violação de segurança para o sistema permitir que você leia seus dados antigos. Então você ganha zeros. Se a energia for cortada entre as etapas 2 e 3, você verá zeros em vez de seus dados.
Dependendo do sistema operacional e do sistema de arquivos subjacentes, a menos que você sincronize explicitamente seus dados com o disco em seu programa, a etapa 3 poderá ocorrer um tempo arbitrariamente longo após a etapa 2.
Em sistemas compatíveis com POSIX, chame fsync () para garantir que seus dados tenham atingido o armazenamento permanente .