fprintf()函数无法将数据持久保存到文件中; 必须跟着fflush()函数?
我正在使用fopen()
函数打开一个文件来写,并返回一个FILE
指针。 然后我用fprintf()
使用这个指针,但是数据不会保留我对文件的写入。 这与Direct IO / O_DIRECT
有关,还是有什么问题?
你需要调用fflush()
,或者在写完文件时只需要fclose()
。 fclose()
将在关闭前尝试刷新。 此行为是ISO C和POSIX的一部分,因此您可以依赖它。 有关fclose()
更多信息,请参见此处 :
刷新流,然后关闭与该流关联的文件。 然后,该函数释放与该流关联的所有缓冲区。 刷新意味着将未写入的缓冲数据写入文件,并丢弃未读缓冲数据。
如果您继续写入文件并且从不刷新或关闭它,则在足够的写入排队后,操作系统将“准备好”时将数据刷新到文件。