假设我从“main”线程创建一个线程,旨在监视和打印“main”中的一些变量。但是“main”也产生了一些输出,所以我想分别打印这两个线程的输出。如何将新线程的输出重定向到除我的c程序中使用的“主”线程之外的新控制台?
答案 0 :(得分:2)
我会将监控信息输出到文件,然后使用tail -f filename
将其显示在我的其他终端中。
这样做的好处是你可以在输出上运行grep
或者你有什么。
答案 1 :(得分:2)
我会将数据写入日志文件,然后使用另一个窗口中的tail -f log_file.txt
来查看,因为这样您可以保留数据副本,但如果您决定需要使用单独的终端然后您可以像常规文件一样打开新终端(tty)。这个问题的主要问题是你可能真的希望它为你打开一个新的终端窗口。
打开一个新的终端窗口来做这样的事情很棘手,并且在不同的终端模拟器之间是不同的。 Here是关于从make文件中打开新终端的另一个问题。您可以尝试从程序或运行程序的脚本中执行相同的操作,并在新终端中运行cat
或tail
作为您的日志窗口。
#!/bin/sh
truncate --size=0 ./logfile.txt
xterm "tail -f ./logfile.txt" 2>&1 > /dev/null &
your_program --log-file=./logfile.txt
我目前还不知道有更好的方法来实现这一目标。
您可能想要研究的另一件事是syslog
。
答案 2 :(得分:0)
在这种情况下(外部)你会发生什么?
如果您运行程序,则会附加到控制台。您当然不必将输出写入控制台(您可以使用文件),但显然无法复制控制台。
是不是使用了足够好的不同文件描述符?