如何在 Linux 中打开终端 window 进行调试输出?

How to open terminal window for debug output in Linux?

我正在将一些应用程序从 Windows 移植到 Linux。默认情况下没有 window,但可以打开一个用于调试输出。我需要在 Linux 上做类似的事情。我发现可以从中使用 XTerm,但是没有任何细节如何做到这一点。

这个新的 window 必须由应用程序本身打开,所以在 XTerm 中启动应用程序对我来说不是一个选项。

如何在 CentOS 7 的 C/C++ 中执行此操作?

This new window must be open by app itself, so starting app inside XTerm is not an option for me.

您像 Windows 开发人员一样思考,而不是 Linux 开发人员。 Linux GUI 程序 写入 stdout/stderr 或日志文件 是很常见的。如果用户想要查看调试输出,他们 运行 来自终端的程序或他们打开日志文件。它简单有效。打开调试 window 是一种 Windows 主义,你真的不应该继承它。

大多数终端程序都关闭了它们的标准 input/output/error,因此您不能简单地将输出通过管道传输到终端。 xterm 有一个选项 -S,它允许您将它的 I/O 连接到一个 伪终端 ,它作为一个中间设备,您可以通过它与终端通信。

有一些应用程序使用了它,您可以研究它们以了解其工作原理。一个(multixterm) relies upon a toolkit which usually is not prepackaged. Another is a test-program ditto, provided with ncurses. Debian and its derived distributions provide that in the ncurses-examples 包(但阅读源代码是必经之路)。没有任何关于该主题的有用教程(阅读相关手册页)。

您可能会想到类似这张来自安装程序的详细信息屏幕图片:

然而,检查 运行 的进程列表表明它正在通过管道(或伪终端)使用 apt 的输出, 重定向到 GUI window。唯一知道的方法是阅读源代码。