我正在 Linux 操作系统上用 C 语言进行驱动器基准测试,但在 NTFS 文件系统上遇到了问题。下面是一些编写许多新文件的代码:
for ( int i = 0; i < 100; ++i )
{
fd = open(nextfile, O_WRONLY | O_DIRECT | O_SYNC | O_CREAT );
write(fd, buff, size);
fsync(fd);
close(fd);
}
这很好用,但是当我想读取所有创建的文件时, fsync 功能似乎不起作用。下面是一些读取所有文件的代码:
for ( int i = 0; i < 100; ++i )
{
fd = open(nextfile, O_RDONLY | O_DIRECT | O_SYNC);
read(fd, buff, size);
fsync(fd);
close(fd);
}
在测试我的旧笔式驱动器时,我的写入时间为 4MB/s,读取时间为 267MB/s,这显然不是真的,但在测试 ext4 文件系统时,读取时间是正确的。我该怎么办?