2016-02-17 4 views
0

Я хочу создать интеллектуальную утилиту для отладки, которая читает stderr, который уже был напечатан в tty (скажем, 1000 строк назад).Могу ли я читать буфер консоли с помощью системных вызовов UNIX?

Существует ли какой-либо вызов API UNIX, который позволяет мне это сделать? Я не мог найти его.

ответ

0

Нет, для этого не будет вызова «UNIX API». Несколько особых случаи могут быть полезны:

  • большинства эмуляторов терминалов обеспечивают скроллинга области, которую вы можете просмотреть. Количество строк для этого обычно настраивается; размер по умолчанию обычно невелик, например, 100 строк.
  • некоторые консольные терминалы, например, Linux, имеют аналогичную функцию (см., Например, 18. Scrolling, на клавиатуре и консоли КАК-В).

А несколько Возможны терминальные реализации, позволяющие предоставить экранную свалку. Как правило, те, которые ограничены в настоящий момент видимого экрана:

  • XTERM (запись меню, а также последовательности Escape)
  • Linux консоли (см упоминание setterm в Dumping a Linux console scrollback buffer? и других решений в How to get the console o/p on Linux terminal that is lost due to scroll over, хотя не упоминалось, что setterm требует привилегии для чтения экрана). Для них есть способы прочитать прокрутку, но только путем предварительной подготовки. Поскольку вопрос сформулирован, ответ no.

Как правило, для этого не существует управляющих последовательностей, поскольку этот подход (позволяющий «любой» программе видеть содержимое экрана) часто рассматривается как нарушение безопасности.