Вы смешиваете необработанные системные вызовы (open
, dup2
) со стандартными библиотечными функциями C ++, которые предлагают операции более высокого уровня. Поскольку библиотечные функции выполняют все виды магов c в фоновом режиме, смешивание их с функциями более низкого уровня или даже с необработанными системными вызовами может создать проблемы, поскольку последние изменяют поведение программы, не давая стандартной библиотеке возможности подтвердить изменения и обновите свои внутренние данные, чтобы соответствовать изменениям.
Что вы должны сделать, это либо:
- Использовать только системные вызовы:
open
, dup2
, read
и write
. - Используйте только стандартные библиотечные функции (где это возможно):
fopen
, freopen
, cin
, cout
и др. c.
Ваш Программа должна быть переписана так:
std::string example;
freopen(argv[1], "r", stdin);
// Don't forget to check for errors.
std::cin >> example;
std::cout << example << std::endl;
freopen(argv[2], "r", stdin);
// Don't forget to check for errors.
std::cin >> example;
std::cout << example << std::endl;