繁体   English   中英

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

[英]Get output from Ncurses app on a separate terminal

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

我见过很多写到文件并使用tail的解决方案,但这似乎很麻烦而且很慢。 顺便说一句。 我什至不知道从哪里开始,我对ncurses很陌生。

首先,ncurses的输出使用标准输出,因此简单地使用“ cout”将输出混淆。 通常,您将希望使用标准错误(cerr)代替进行调试等。

如果您不想使用简单的文件tail (除非您的应用程序在某种程度上是极端的,否则它不会很慢),您可以使用如下命名管道:

mkfifo debug-pipe

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

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

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

cat debug-pipe

(顺便说一句,我想我知道您首先想到的是哪种解决方案。如果第二个终端仿真器可以将标准错误重定向到它自己的标准错误,则它只会出现在第一个终端中。对于终端仿真器来说,这很容易为此,但据我所知,没有任何选择。)

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

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

  • 使用newterm (可让您指定要使用的输入/输出)

例如,ncurses测试程序ditto使用newterm打开一个或多个xterm的输出显示。 这是屏幕截图:

同3位客户

原则上,您可以使用当前终端进行输入,并在另一个终端上显示ncurses输出(尽管如此,我不记得有任何有用的程序可以执行此操作-仅演示)。

使用screentmux应用程序可以分离并重新连接任何控制台会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM