Создание временных файлов в Гугл тестах

Мне надо протестировать аналог утилиты tree, используя гугл тесты, boost и C++ 14. Для этого, естественно, нужно создать временные директории с файлами. Я умею создавать временную директорию, но как создать временной файл (так, чтобы ему можно было указывать имя, адресс). Я пробовал через tmpnam, но получал ошибку bus error 10, по непонятной мне причине:

class TreeTestCase : public ::testing::Test {
public:

    path p;
    std::string testFile;

    TreeTestCase() {
        this->p = current_path();
        this->p += "/my_tmp";
        create_directory(p);
        testFile = std::tmpnam("my_tmp/testFileLongNameToBeFound.txt");
    }

    ~TreeTestCase() {
        remove_all(this->p);
    }
};

Ответы (1 шт):

Автор решения: avp

Вы передаете в tmpnam() константу, а не char массив, который она должна заполнить, вот она и валится.

И вообще, это устаревшая функция, вы должны были получить warning при компиляции (по крайней мере в gcc/g++).

Лучше посмотрите man tempnam и пользуйтесь ей.

→ Ссылка