我想知道是否有某种方法可以确定文件完成在 Windows 和 Linux 上写入目录(显然,它们可能是两个不同的命令)。
这样做主要是为了,我可以设置一个程序来简单地监听写入磁盘的完成情况,而不是不断地轮询目录中是否有新的非临时文件(这样做似乎更好)。
答案1
- 文件不会“写入目录”。数据被写入文件,文件可能(硬)链接到目录中。但将数据写入文件的过程与目录无关;硬链接过程是原子的,无需等待“完成”。
- 在 Windows 上,您要查找的功能是
FindFirstChangeNotification()
。 - 这是一个 StackOverflow 主题,而不是 SuperUser 主题。
答案2
对于 Linux,你可以看看在这个问题上,讨论是在 c++ 中,但想法(来自答案,而不仅仅是选择的一个)仍然很好。基本上,在 linux 中,您可以使用一些标志,或者观察进程/proc/pid/fd
。
答案3
Windows 至少从 Vista 开始就有一个 I/O 调度系统:
此外,AHCI 模式下的现代 SATA 磁盘也有自己的集成调度程序 - 称为本机命令队列 (NCQ)。