2010-11-22 61 views
3

假设我从我的“主”线程创建一个线程,它旨在监视和打印“main”中的一些变量。但“主”也产生一些输出,所以我想分别打印这两个线程的输出。我如何将新线程的输出重定向到一个新的控制台,而不是一个“主”线程在我的c程序中使用的控制台?输出到一个新的终端

+0

这是在运行什么操作系统? – 2010-11-22 18:13:34

+0

Fedora操作系统 – sinoTrinity 2010-11-22 18:17:41

+2

Nitpick:fedora不是操作系统。这是一个分配。 – Falmarri 2010-11-22 18:24:17

回答

0

您会发现在这种情况下(外部)会发生什么?

如果您运行一个程序,您将连接到控制台。您当然不必将输出写入控制台(您可以使用文件),但控制台不能明显复制。

是不是使用不够好的文件描述符?

2

我会输出监控信息到一个文件,然后使用tail -f filename来显示它在我的另一个终端。

这样做的好处是您可以在输出上运行grep或您还有什么。

2

我会写数据到一个日志文件,然后从另一个窗口使用tail -f log_file.txt来观看它,因为这样你会保留一份数据,但如果你决定你需要使用单独的终端,那么你可以像普通文件一样打开新的终端(tty)。与此相关的主要问题是,您可能真的希望它为您打开一个新的终端窗口。

打开一个新的终端窗口来做这样的事情很棘手,在不同的终端仿真器之间是不同的。 Here是关于从make文件中打开新终端的另一个问题。您可以尝试从程序或运行程序的脚本执行相同的操作,并在新终端中运行cattail作为您的日志窗口。

#!/bin/sh 
truncate --size=0 ./logfile.txt 
xterm "tail -f ./logfile.txt" 2>&1 > /dev/null & 
your_program --log-file=./logfile.txt 

我目前不知道更好的方法来完成此操作。

您可能想要考虑的另一件事是syslog