【发布时间】:2015-05-21 19:58:40
【问题描述】:
我正在解析一个大型日志文件。我想根据严重性分类(严重、警告等)提取特定消息。在解析日志时,我想根据消息的严重性将消息发送到给定的、衍生的、特定于严重性的终端。当主程序完成读取日志文件时,终端不应关闭。环境是solaris 10/gcc 3.4.6。我找到了以下示例,该示例捕获了我的想法,但效果不佳(xterm 产生,但没有向其发送输出):
#include <stdio.h>
int main()
{
FILE *output;
int i;
output = popen ("xterm", "w");
for (i = 0; i < 10; i++)
fprintf (output, "%d\n", i);
pclose (output);
}
我没有与 xterm 结婚,我只是把它用作方便,我喜欢它的标题、颜色和大小的能力。我有点明白,写入由 popen 生成的句柄与写入终端的输出不同(只是有点......)。这似乎是一件容易的事。
【问题讨论】:
-
gcc 3.4.6?严重地?当前版本是 5.1。使用这种过时的版本有充分的理由吗?
-
@stefan 有时,我必须在 gcc 2.95 上编写代码。 “环境危害”我想:)
-
有充分的理由吗?不。在这方面我无法控制我的环境。
-
您打开的每个 xterm 都应该显示为一个新的
/dev/pts/n设备。您可以简单地将您的输出写入标准输出和标准错误,然后将您的程序输出重定向为xterm; xterm; myprogram >/dev/pts/1 2>/dev/pts/2。从未测试过,但应该可以工作。不过,您只能使用两个终端。