假设我正在写一个文件,但是我想通过关闭机器的电源来结束写操作,那是不是fclose()函数没有被调用的问题?
FILE *f = fopen("file.txt", "w");
if (f == NULL)
{
printf("Error opening file!\n");
exit(1);
}
/* print some text */
while(1){
//write something...
}
//Dont want to call this
fclose(f);
答案 0 :(得分:0)
简短回答:不,如果有任何缓冲,请不要写。如果没有缓冲,也可能没有。
可以使用setvbuf
控制缓冲模式。您还可以定期调用fflush
来刷新缓冲区。
但是,无论您如何管理缓冲,控制都会转移到OS内核I / O调度,然后转移到硬件(可能有自己的缓冲)。
据我所知,<stdio.h>
中的文件I / O例程并没有给你足够低的控制权来绝对确定你的数据是在从{{1}这样的调用返回时写的。 }。
请注意,我在谈论突然意外断电。