C++ 代码无法在 Ubuntu 16.04 上创建输出文件

C++ 代码无法在 Ubuntu 16.04 上创建输出文件

使用带有内核 4.16.7 的 Ubuntu 16.04。

我正在尝试使用在这里找到的代码对 SSD 进行基准测试:https://cristianadam.eu/20160410/c-plus-plus-i-slash-o-benchmark/

此测试使用三种不同的 API(C、C++ 和 POSIX)执行文件复制操作并测量执行此操作所需的时间。但是,我的文件系统中没有生成输出文件。此外,没有报告任何错误。测试应该通过在输入文件的名称后附加“.copy”来生成输出文件名。

请注意,我也尝试过使用普通硬盘进行这些测试,但效果并不好。此外,尝试指定源文件和目标文件的完整路径,但问题仍然存在。我还应该提到,测试运行时输入文件存在,测试会向标准输出一条消息,其中包含所用时间,但正如我所说,文件系统中没有输出文件。

另一件有趣的事情是,如果在运行测试时输出文件已经存在,它将被删除,这再次导致输出文件不存在。

另外值得一提的是,如果使用“<<”运算符写入文件,则会创建文件(至少对于我尝试过的 C++ 测试而言)。但是,我想避免这种方法。

我将不胜感激任何帮助。

先感谢您。

答案1

检查主循环中的代码

    for (unsigned int i = 0; i < times; ++i)
    {
        total += measure::ms(it->second, args[2].c_str(), dest.c_str(), inBuffer);
        ::unlink(dest.c_str());
    }

::unlink(dest.c_str())测试结束后删除该文件。

如果测试运行很长时间,您可以在执行过程中看到以下文件:

$ test_io.exe c big.bin 10000 &
$ ls -la
-rw-r--r-- 1 user group 134217724 Jul 23 13:45 big.bin
-rw-r--r-- 1 user group  70254592 Jul 23 13:54 big.bin.copy

相关内容