179得票4回答
file.flush()到底是做什么的?

我在Python的File Objects文档中找到了这段内容:flush()函数不一定将文件数据写入磁盘。使用flush()后跟os.fsync()可以确保此行为。所以我的问题是:Python的flush究竟是做什么的?我原以为它会强制将数据写入磁盘,但现在看来它并没有这样做。为什么呢?

73得票6回答
fflush和fsync之间的区别

我以为fsync()会在内部执行fflush(),所以在流上使用fsync()是可以的。但是当在网络I/O下执行时,我得到了一个意外的结果。 我的代码片段:FILE* fp = fopen(file, "wb"); /* multiple fputs() calls like: */ fpu...

36得票3回答
没有使用fsync()的rename()函数是否安全?

在调用rename(tmppath, path)之前不调用fsync(tmppath_fd),是否安全? 我希望路径始终指向一个完整的文件。 我主要关心的是Ext4。在所有未来的Linux内核版本中,重命名(rename())承诺是安全的吗? Python中的使用示例:def store_...

29得票4回答
如何在 ofstream 上执行 fsync?

我希望确保 ofstream 已经写入了磁盘设备。有什么可移植的方法(在 POSIX 系统上可移植)可以实现这一点吗? 如果我单独以附加模式打开文件并获取文件描述符,然后使用该文件描述符调用 fsync,是否可以解决问题?像这样:ofstream out(filename); /* ... ...

19得票4回答
如何在POSIX系统中持久地重命名文件?

在POSIX文件系统中,正确的持久重命名文件的方式是什么?具体来说,我想知道在目录上进行fsync的方法。(如果这取决于操作系统/文件系统,我正在询问Linux和ext3/ext4)。 注意:StackOverflow上有其他关于持久重命名的问题,但据我所知它们没有涉及到对目录进行fsync...

18得票4回答
刷新缓冲区、同步文件和内存层的区别:fflush、fsync和sync

我知道已经有类似的问题了,我看了一下,但是没有找到一个明确的、唯一的答案来回答我的问题。我只是在网上调查这些函数及其与内存层的关系。特别是我发现了这篇精美的文章,它给了我一个很好的关于内存层的见解。 看起来 fflush() 将数据从应用程序移动到内核文件系统缓冲区,这是没问题的,每个人...

13得票2回答
安卓(Java)中ext4/fsync的情况不明确

Tim Bray的文章“安全地保存数据”引发了我一些疑问。现在已经过去一个多月,我没有看到任何后续报道,所以我决定在这里讨论这个话题。 这篇文章的观点之一是,在使用FileOutputStream时应调用FileDescriptor.sync()来保险起见。起初,我非常恼火,因为我从未见...

11得票1回答
“sync”和“syncfs”系统调用是否映射到FUSE的“fsync”调用?

FUSE API并没有暴露出文件系统级别的sync调用,只有fsync和fsyncdir。这是否意味着当调用sync(或在FUSE挂载点内调用syncfs)时,内核会在所有FUSE挂载的文件系统上对所有打开的文件调用fsync?还是有不同的语义?

10得票2回答
如何在Linux上实现耐久性?

我正在编写一些处理关键数据的软件,并需要知道实现持久性所需的确切操作。 无论我查找哪里,都有矛盾的信息,因此我很感激任何见解。 我有三种将数据写入磁盘的方法: 1. 使用O_DIRECT | O_DSYNC,pread然后pwrite 512字节至16 MB块。 2. 使用O_DIREC...

9得票3回答
强制在X秒内只进行一次写入/同步到磁盘操作

我担心在完全空闲的系统上,我可以通过磁盘LED和iotop看到每隔几秒钟就会出现大量的写入活动,主要来自Chromium进程。这种高强度的写入活动毫无意义,特别是使用固态硬盘更加不应该如此。对于我来说读取并不是问题,因为我的20GB RAM笔记本电脑有丰富的磁盘缓存。 commit选项(默认...