Os dados gravados via write () serão liberados para o disco se um processo for eliminado?

Eu estou trabalhando com um programa que usaqdbm para manter um armazenamento de valor de chave (qdbm está vinculado ao programa). Em certos casos, o processo coloca um valor no banco de dados qdbm e, em seguida, se reinicia chamando um script init externo (via system ()). Parece que, às vezes, um valor gravado no banco de dados qdbm não fica real, e eu estou imaginando se isso poderia ocorrer porque os dados não foram liberados para o disco antes de o processo ser eliminado via SIGTERM.

Como o qdbm faz gravações usando a chamada do sistema write () (versus, digamos, a função da biblioteca fwrite ()), eu pensaria que o kernel do Linux deveria saber para liberar tudo no disco eventualmente (o sistema não é reiniciado, apenas o processo ). Além disso, close () é chamado no DF antes que o processo seja eliminado.

Então, o meu entendimento é correto, ou eu preciso adicionar algumas chamadas fdatasync () ou semelhantes em algum lugar? Links para referências autoritativas sobre a semântica aqui também seriam apreciados.

questionAnswers(1)

yourAnswerToTheQuestion