Я хочу перенаправить stdin / stdout в какой-нибудь файл. Программа написана для ОС Unix, но я думаю, что использование стандартной библиотеки C / C ++ вместо функций ОС — это хорошо. Я знаю, как я могу сделать это, используя функции ОС dup2()
а также open()
но я прочитал несколько способов сделать это с помощью reopen()
на stdin
или же stdout
, Будет ли повторное открытие стандартных переменных делать то, что я хочу? Заменит ли он файлы, открытые в 0 и 1 файловых дескрипторах? Какой способ лучше?
Поскольку вы пишете свою собственную оболочку, я бы использовал функции более низкого уровня dup2 () и open ().
freopen () на stdin закроет исходный stdin и откроет файл, который вы запрашивали, в позиции stdin — так что теперь вы потеряли stdin. Не то чтобы это имело большое значение, если вы используете open () и dup2 () для замены дескриптора файла 0 или 1, конечно — вы все равно потеряете оригинальный stdin, так что делайте это только после того, как вы разветвились.
Других решений пока нет …