Запись в файл a.txt, при этом терминал перенаправляется в файл b.txt - PullRequest
0 голосов
/ 19 июня 2020

У меня есть программа, работающая как таковая:

./program &> b.txt

И исполняемый файл «программы» записывает в другой файл «a.txt», как показано:

std::ofstream file;
file.open ("a.txt", std::ios::out);
file << "content: " << some_param << "\n";
file.close();

и Конечно, исполняемый файл "программы" выводит как таковой другой текст:

std::cout << "...";
std::cerr << "...";

Проблема в следующем; «a.txt» имеет некоторый контент, который обычно должен находиться в «b.txt», а также функция, которая записывает в «a.txt», выглядит так, как будто она запускается только один раз, в то время как обычно эта функция должна была выполняться 12- 13 раз.

Может быть полезно упомянуть, что функция, записывающая в «a.txt», вызывается из инфраструктуры модульного тестирования GoogleTest, однако функции std :: cout или cerr могут быть вызваны из любого места.

В чем может быть проблема?

1 Ответ

0 голосов
/ 19 июня 2020

Вроде решил проблему, думал поделюсь. На самом деле, как указали комментаторы, ошибка была довольно простой.

1) «a.txt» имеет некоторое содержимое из «b.txt», потому что, по-видимому, я специально сказал «программе» сделать это. Эта часть не была вызвана каким-то «неопределенным поведением» фреймворка GoogleTest. (Я ожидал этого, поскольку использовал некоторую :: внутреннюю функциональность)

2) Код, записывающий в «a.txt», запускается только один раз, потому что, как было предложено @G. Sliepen, файл не открывается с std::ofstream::app, опять же мой хрен.

...