关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭9年前。Improvethisquestion我想对Linux(2.6.31)中的sync(8)和fsync函数的功能有更多的说明。它是否确保将文件写入相应的存储?
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭9年前。Improvethisquestion我想对Linux(2.6.31)中的sync(8)和fsync函数的功能有更多的说明。它是否确保将文件写入相应的存储?
这个问题在这里已经有了答案:DoesLinuxguaranteethecontentsofafileisflushedtodiscafterclose()?(9个回答)关闭9年前。当我们调用close(),它会自动执行fsync()同步到物理媒体?
这个问题在这里已经有了答案:DoesLinuxguaranteethecontentsofafileisflushedtodiscafterclose()?(9个回答)关闭9年前。当我们调用close(),它会自动执行fsync()同步到物理媒体?
FUSEAPI不公开文件系统级别的sync调用,只是fsync和fsyncdir。这是否意味着当sync被调用时(或FUSE挂载点内的syncfs),内核对所有FUSE挂载的所有打开文件调用fsync文件系统?还是有不同的语义? 最佳答案 查看内核源代码,似乎在sync和syncfs上执行了任何挂起的写回,但未调用fsync(不是AFAICS无论如何),所以实际上没有任何方法可以知道调用了sync或syncfs。相关代码在https://github.com/torvalds/linux/blob/v4.16/fs/sync.c,例
FUSEAPI不公开文件系统级别的sync调用,只是fsync和fsyncdir。这是否意味着当sync被调用时(或FUSE挂载点内的syncfs),内核对所有FUSE挂载的所有打开文件调用fsync文件系统?还是有不同的语义? 最佳答案 查看内核源代码,似乎在sync和syncfs上执行了任何挂起的写回,但未调用fsync(不是AFAICS无论如何),所以实际上没有任何方法可以知道调用了sync或syncfs。相关代码在https://github.com/torvalds/linux/blob/v4.16/fs/sync.c,例
在不先调用fsync(tmppath_fd)的情况下调用rename(tmppath,path)是否安全?我希望路径始终指向一个完整的文件。我主要关心Ext4。rename()是否promise在所有future的Linux内核版本中都是安全的?Python中的用法示例:defstore_atomically(path,data):tmppath=path+".tmp"output=open(tmppath,"wb")output.write(data)output.flush()os.fsync(output.fileno())#Theneededfsync().output.clo
在不先调用fsync(tmppath_fd)的情况下调用rename(tmppath,path)是否安全?我希望路径始终指向一个完整的文件。我主要关心Ext4。rename()是否promise在所有future的Linux内核版本中都是安全的?Python中的用法示例:defstore_atomically(path,data):tmppath=path+".tmp"output=open(tmppath,"wb")output.write(data)output.flush()os.fsync(output.fileno())#Theneededfsync().output.clo
我想确保已将ofstream写入磁盘设备。这样做的可移植方式是什么(在POSIX系统上可移植)?如果我在read-only附加模式中单独open文件以获取文件描述符并调用fsync是否可以解决问题它?像这样:ofstreamout(filename);/*...writecontentintoout...*/out.close();intfd=open(filename,O_APPEND);fsync(fd);close(fd); 最佳答案 如果您能够使用Boost,请尝试使用基于file_descriptor_sink的流,例如:
我想确保已将ofstream写入磁盘设备。这样做的可移植方式是什么(在POSIX系统上可移植)?如果我在read-only附加模式中单独open文件以获取文件描述符并调用fsync是否可以解决问题它?像这样:ofstreamout(filename);/*...writecontentintoout...*/out.close();intfd=open(filename,O_APPEND);fsync(fd);close(fd); 最佳答案 如果您能够使用Boost,请尝试使用基于file_descriptor_sink的流,例如: