问题标签 [fsync]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1148 浏览

sync - boost::filesystem::create_directories() 创建的目录不能立即访问?

boost::filesystem::create_directories()用来创建新目录。当我在创建后不久尝试访问这些目录时,我收到一条错误消息:没有这样的目录。但是如果我在创建目录后睡一会儿一切都很好(我没有收到错误)。另外,我尝试在创建目录后使用fsync()and sync(),但没有任何区别。我在 ext4 和 xfs 文件系统上测试它,我的 boost 版本是 boost 1.44

我的问题是

  1. 是否boost::create_directories()立即创建目录?或者那里可能有问题?
  2. 此外,是否sync()保证fsync()将所有内容刷新到 ext4/xfs 上的光盘?
0 投票
4 回答
119042 浏览

python - file.flush() 到底在做什么?

我在File Objects 的 Python 文档中找到了这一点:

flush()不一定将文件的数据写入磁盘。使用flush()后跟os.fsync()确保此行为。

所以我的问题是:Python 到底在flush做什么?我以为它会强制将数据写入磁盘,但现在我发现它没有。为什么?

0 投票
3 回答
10738 浏览

linux - 没有 fsync() 的 rename() 安全吗?

rename(tmppath, path)不先打电话就打电话安全fsync(tmppath_fd)吗?

我希望路径始终指向一个完整的文件。我主要关心Ext4。rename() 是否承诺在所有未来的 Linux 内核版本中都是安全的?

Python中的一个使用示例:

0 投票
2 回答
1422 浏览

linux - msync 是否像 ext3 上的 fsync 一样将文件系统上的所有文件同步到磁盘?

据我所知,在大多数日志模式为“data=ordered”的ext3系统上,fsync不仅会同步fd指定的文件,还会同步文件系统上的所有文件,这个问题在内核2.6之前还没有修复.30

我有一个问题,那就是,msync 和 fsync 做的事情一样吗?

谢谢。

0 投票
1 回答
137 浏览

c++ - fsync 的顺序/方向重要吗?

假设我将一些文件和目录写入 USB 拇指驱动器。

我创建了一个文件夹,newFolder1两个文件newfile1newfile2.

同步不会自动发生,所以我需要进行fsync更改。

所以我需要调用fsync,newFolder1和。newfile1newfile2

问题是,我这样做的顺序是否重要?

0 投票
3 回答
1818 浏览

c - 在 Linux 中不使用 fsync 写入和读取同一个 fd

假设我在不执行 fsync 的情况下将一个块写入文件描述符,然后稍后从同一个描述符读取同一个块。是否保证我会收到相同的信息?

该程序是单线程的,任何其他进程都不会访问该文件。

0 投票
2 回答
2128 浏览

linux-kernel - 为什么 fsync() 在 Linux 内核 3.1.* 上比内核 3.0 花费更多时间

我有一个测试程序。在 Linux 内核 3.1.* 上大约需要 37 秒,但在内核 3.0.18 上只需要大约 1 秒(我只是在与以前相同的机器上更换内核)。请给我一个关于如何在内核 3.1 上改进它的线索。谢谢!

0 投票
1 回答
655 浏览

linux-kernel - 使用 fsync 最小化磁盘访问

有一种情况是,每当发生写入时,fsync 都会与该写入一起使用。那么,如何最小化磁盘访问呢?内核如何做到这一点?

fsync() 将文件描述符 fd 引用的文件的所有修改的内核数据(即修改的缓冲区高速缓存页)传输(“刷新”)到磁盘设备(或其他永久存储设备)。

我认为内核可以在一段时间后定期将所有修改缓冲区的数据传输到硬盘。这样就可以最大限度地减少磁盘访问。

请提供一些建议/提示。

0 投票
1 回答
1116 浏览

linux - linux:智能 fsync()?

我正在录制音频并将其写入 SD 卡,数据速率约为 1.5 MB/s。我正在使用带有 ext4 文件系统的 4 类 SD 卡。

在一定的时间间隔后,内核会自动同步文件。这样做的缺点是,我的应用程序缓冲区堆积起来等待写入磁盘。

我认为,如果内核经常同步它现在正在做的事情,它可能会解决这个问题。

fsync()在应用程序中使用过一定间隔后同步。但这并不能解决问题,因为在调用应用程序之前内核已经同步了某些时间fsync(),所以从应用程序调用 fsync() 是浪费时间。

我需要一个同步机制(比如smart_fsync()),这样当应用程序调用 smart_fsync() 时,内核将仅在一段时间未同步时才会同步,否则它将返回。

由于没有函数 as smart_fsync()。什么是可能的解决方法?

0 投票
3 回答
1223 浏览

python - 如何获取子进程的打开文件?

如何获取子进程的打开文件?

我打开了一个生成文件的子进程,我想获取这些文件的文件描述符以对它们进行 fsync

所以如果我有这样的代码:

进程 p 生成一些文件,我可以使用以下方法获取子进程的进程 ID:

但是我怎样才能让这些文件的 fd 对它们调用 flush 和 fsync() 呢?

实际上我找到了一个名为“lsof”(列出打开的文件)的实用程序,但我的系统上没有安装或支持它,所以我没有对它做进一步的调查,因为我真的需要一个标准的方法

谢谢