我用C写客户端服务器应用程序的服务器,我必须将日志保存到文件中。fprintf有没有“提交”? (防止服务器死亡时数据丢失)
我使用fprintf将其写入文件,但是当服务器关闭时,我丢失了文件中的数据,导致我没有关闭filedescriptor,是否有任何函数告诉我的程序保存数据?
Thx
我用C写客户端服务器应用程序的服务器,我必须将日志保存到文件中。fprintf有没有“提交”? (防止服务器死亡时数据丢失)
我使用fprintf将其写入文件,但是当服务器关闭时,我丢失了文件中的数据,导致我没有关闭filedescriptor,是否有任何函数告诉我的程序保存数据?
Thx
如果你fflush每fprintf后它有帮助。
fflush
应该做你想做的事 - 它确保所有的输出被明确地写入文件而不是例如。被缓存供以后写入。这样就可以将数据移出用户空间。
sync
然后可以使用 - 它会导致所有缓冲文件更改被物理写入(尽管根据规范,在写入完成之前它不需要阻塞,所以您可以确定它们已经启动但不是它们'已完成)。
也谢谢你;-) – user1097772 2012-03-09 04:55:38
@pst不,好点。我会编辑。 – Tommy 2012-03-09 05:14:47
Thx,这正是我所需要的;-) – user1097772 2012-03-09 04:53:55
另外,fflush((FILE *)NULL)将会刷新所有打开的文件 – 2012-03-09 05:08:02