2010-11-22 97 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