从单独的终端上获取Ncurses应用程序的输出

时间:2017-01-03 19:34:50

标签: c++ linux bash debugging ncurses

我想要一个解决方案,允许我将ncurses应用程序分离到不同的终端仿真器窗口并查看标准命令的输出,如当前的'cout' - 用于调试等。

我见过很多写入文件并使用tail的解决方案,但这看起来非常简陋和缓慢。 BTW。我不知道从哪里开始,我对ncurses很新。

3 个答案:

答案 0 :(得分:0)

首先,ncurses使用标准输出,因此只需使用' cout'会混淆输出。通常,您需要使用标准错误(' cerr')来代替调试等。

如果您不想使用简单文件和tail(除非您的应用程序在某种程度上极端),否则您可以使用这样的命名管道:< / p>

mkfifo debug-pipe

然后在新终端中运行您的应用程序(例如xterm)并将错误输出重定向到命名管道。

xterm -e "my-application 2> debug-pipe" &

最后将命名管道转储到第一个终端(或任何终端)。

cat debug-pipe

(顺便说一句,我想我明白你最初想象的是什么样的解决方案。如果第二个终端模拟器可以将标准错误重定向到它自己的标准错误,那么它只会出现在第一个终端中。终端模拟器很容易做到这一点,但据我所知,没有人有这个选项。)

答案 1 :(得分:0)

您可以通过以下两种方式之一初始化curses:

  • 使用initscr(使用标准输入/输出)或

  • 使用newterm(允许您指定要使用的输入/输出)

例如,ncurses测试程序ditto uses newterm打开输出显示在一个或多个xterm上。这是一个截图:

ditto with 3 clients

原则上,您可以使用 当前 终端进行输入,并在 另一个上显示ncurses输出 终端(虽然是随便的,我不记得任何有用的程序,只做这个 - 只有演示)。

答案 2 :(得分:-1)

使用screentmux个应用可以实现分离和重新附加任何控制台会话。