#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$ соответственно.
Комментариев нет:
Отправить комментарий