Получить вывод из приложения Ncurses на отдельном терминале
Я хотел бы решение, которое позволяет мне отделить ncurses
Приложите приложение к другому окну эмулятора терминала и просмотрите выходные данные стандартных команд, таких как 'cout', в текущей - для отладки и тому подобного.
Я видел много решений, которые пишут в файл и используют tail
но это кажется довольно хакерским и медленным. КСТАТИ. Я понятия не имею, с чего начать, я совсем новичок в ncurses.
3 ответа
Вы можете инициализировать проклятия одним из двух способов:
с помощью
initscr
(который использует стандартный ввод / вывод), илис помощью
newterm
(который позволяет указать, какой вход / выход использовать)
Например, тестовая программа ncurses ditto
использования newterm
открыть выходные дисплеи на одном или нескольких xterm. Вот скриншот:
В принципе, вы можете использовать текущий терминал для ввода и отображать вывод ncurses на другом терминале (хотя это не случайно, я не припоминаю никаких полезных программ, которые делают это - только демонстрации).
Прежде всего, ncurses использует стандартный out для своего вывода, поэтому простое использование cout перепутает вывод. Обычно вы хотите использовать стандартную ошибку ('cerr') вместо этого для отладки и тому подобного.
Если вы не хотите использовать простой файл и tail
(что не медленно, если ваше приложение каким-то образом не экстремально), вы можете использовать именованный канал, например:
mkfifo debug-pipe
Затем запустите ваше приложение в новом терминале (например, xterm) и перенаправьте вывод ошибок в именованный канал.
xterm -e "my-application 2> debug-pipe" &
И наконец сбросьте именованный канал в первый терминал (или любой терминал).
cat debug-pipe
(Кстати, я думаю, я понимаю, какое решение вы впервые представили. Если бы второй эмулятор терминала мог просто перенаправить стандартную ошибку на свою собственную стандартную ошибку, он просто появился бы в первом терминале. Это было бы легко для эмулятора терминала чтобы сделать это, но, насколько я знаю, никто не имеет такой возможности.)
Отсоединение и повторное присоединение любого сеанса консоли может быть достигнуто с помощью screen
или же tmux
Программы.