#c #boot
Выполняется код загрузчика операционной системы. Имеется только один процесс.
Как перенаправить вывод какой-либо сторонней функции на данном участке кода в буфер
char* (функция печатает в stdout с помощью printf, код этой функции я исправить не могу)?
Команда, которая работает в консоли "> buffer", естественно, тут работать не будет,
да и файлов никаких нет... Код написан на чистом C, но могу написать костыль и на C++.
Подскажите пожалуйста, как решить проблему? Единственный способ, который я знал,
тут не будет работать.
Ответы
Ответ 1
Есть вариант решения через функцию freopen(), однако следует быть осторожнее в его использовании. char buffer[BUFSIZ]; freopen("/dev/null", "a", stdout); setbuf(stdout, buffer); // весь вывод через printf будет в буфер printf("simple print"); freopen("/dev/tty", "a", stdout); // возвращаем печать в stdout на консоль printf("%s\n", buffer); в Windows аналогом для /dev/null и /dev/tty служат NULL и CONOUT$ соответственно.
Комментариев нет:
Отправить комментарий