s operações de E / S Posix em nomes de arquivos são sequencialmente coerente

Gostaria de saber se existe uma garantia padrão Posix de que as modificações em um arquivo sejam visíveis através de repetidasopen/close chama o mesmo nome de arquivo. Para exposição, considere este script Bash:

#!/bin/bash

FILE=$(mktemp)

echo "Some data" >> $FILE
cat $FILE

É garantido que até o momentoecho termina, todos os dados estão disponíveis no arquivo?

Em termos de funções Posix, um exemplo pode ser assim:

const char fn[] = "/tmp/somefile";
const char data[] = "hello world";

// Stage 1
{
   int fd = open(fn, O_CREAT);
   write(fd, data, sizeof data); // #1
   close(fd);
}

// Stage 2
{
   int fd = open(fn);
   read(fd, ...);                // #2
   close(fd);
}

É garantido que a gravação na linha 1 é visível para a leitura 2 ou o sistema operacional pode armazenar em cache a gravação para que não se propague a tempo? Podemos supor que nenhum outro processo saiba o nome do arquivo ou subverta a pesquisa do arquiv

questionAnswers(2)

yourAnswerToTheQuestion