Есть такой очень простой код, который раз в секунду добавляет в конец файла данные.
int main()
{
FILE* file = fopen("test.file", "a");
int i = 0;
char str[100];
while (1) {
sprintf(str, "heeeey %d\n", i);
int w = fwrite(str, sizeof(char), strlen(str), file);
int fl = fflush(file);
printf("fwrite = %d, fflush = %d \n", w, fl);
sleep(1);
++i;
}
return EXIT_SUCCESS;
}
Я запускаю эту программу, вижу, что
fwrite возвращает количество записанных байт, файл создался и данные появляются. В процессе выполнения программы удаляю файл и вижу, что
fwrite продолжает возвращать количество записанных байт, при этом файла нет, и он не пересоздается. Хотя, казалось бы, логично, что я должен получить ошибку.
fflush тоже молчит.