Код C ++ не может создать выходной файл в Ubuntu 16.04 [закрыто]

Использование Ubuntu 16.04 с ядром 4.16.7.

Я пытаюсь протестировать SSD, используя код, который я нашел здесь: https://cristianadam.eu/20160410/c-plus-plus-i-slash-o-benchmark/

Этот тест использует три разных API (C, C ++ и POSIX) для выполнения операции копирования файлов и измеряет время, затрачиваемое на это. Однако в моей файловой системе не создаются файлы вывода. Также об ошибках не сообщается. Предполагается, что тест генерирует имя выходного файла, добавляя «.copy» к имени входного файла.

Обратите внимание, что я также пробовал эти тесты с обычным жестким диском, и он тоже не работал. Кроме того, попытался указать полный путь как к исходному, так и к целевому файлу, но проблема не исчезла. Я также должен упомянуть, что входной файл существует, когда тесты запускаются, и тест выводит сообщение на стандартный вывод с указанием затраченного времени, но, как я уже сказал, нет выходного файла в файловой системе.

Еще одна интересная вещь заключается в том, что если выходной файл уже существует при запуске теста, он удаляется, что снова приводит к несуществующему выходному файлу.

Также стоит упомянуть, что файл создается, если для записи в него используется оператор «<<» (по крайней мере, для теста C ++, который я пробовал). Однако я бы хотел избежать этого подхода.

Буду признателен за любую помощь.

Заранее благодарю.

1
задан 23 July 2018 в 14:32

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
3
ответ дан 3 December 2019 в 07:23

Другие вопросы по тегам:

Похожие вопросы: