fprintf()函数无法将数据持久保存到文件中; 必须跟着fflush()函数?

我正在使用fopen()函数打开一个文件来写,并返回一个FILE指针。 然后我用fprintf()使用这个指针,但是数据不会保留我对文件的写入。 这与Direct IO / O_DIRECT有关,还是有什么问题?

你需要调用fflush() ,或者在写完文件时只需要fclose()fclose()将在关闭前尝试刷新。 此行为是ISO C和POSIX的一部分,因此您可以依赖它。 有关fclose()更多信息,请参见此处 :

刷新流,然后关闭与该流关联的文件。 然后,该函数释放与该流关联的所有缓冲区。 刷新意味着将未写入的缓冲数据写入文件,并丢弃未读缓冲数据。

如果您继续写入文件并且从不刷新或关闭它,则在足够的写入排队后,操作系统将“准备好”时将数据刷新到文件。