2014-09-28 149 views
0

我寫了一個腳本,它有多個線程,並且在這個線程中我使用「print()」代碼來打印有關該線程的日誌活動,但問題是我不想打印所有這些日誌在一個終端窗口。我在ubuntu論壇上發現了這個代碼,但它似乎不是一個標準的方式,可以在任何操作系統上運行,包括mac,ubuntu,fedora,... 有沒有任何標準的方法來在多個終端窗口或更好的ida比這個代碼?在新的終端窗口中打印

import subprocess 

pid = subprocess.Popen(args=["gnome-terminal", "--command=python test.py"]).pid 
print pid 
+0

如果有一個標準的方式來運行終端程序,您的終端程序wo uld可能被稱爲'terminal'而不是'gnome-terminal'。 – 2014-09-28 15:45:39

回答

0

shell(即Bash)並沒有真正意識到多個窗口。您可以使用screen來管理多個shell會話。

例如創建一個新的屏幕會話,並執行ifconfig內:

#create a unique name for the screen session (timestamp + random muber) 
timestamp_random=my_$(date +%s)_$RANDOM 
#create new screen session in detached mode 
screen -S "$timestamp_random" -d -m 
#stuff (write) command into that screen session + execute (by hitting newline/ENTER) 
screen -r "$timestamp_random" -X stuff $'ifconfig\n' 

然後,您可以列出所有屏幕會話使用:

screen -list 

,並連接到每個會話,查看輸出:

screen -R [sessionname] 
0

很難理解你的問題,但以下內容可能會有所幫助。在OSX上啓動一個終端,然後按下Command-N來獲得第二個終端 - 這樣你就可以打開2個終端了。現在點擊其中一個,然後鍵入:

tty 

它會告訴你與該窗口相關的終端名稱,例如, /dev/ttys000

然後去其他打開終端窗口,輸入:

echo Hello > /dev/ttys000  # or whatever the other Terminal was called 

您應該看到echo命令的輸出出現在其他終端的窗口,我認爲這是你從你的問題的意思。

+0

有沒有辦法從這個代碼?我的應用程序是單線程的,但我想讓它顯示在一個終端在另一個 – 2017-06-24 02:12:32

+0

@RodrigoLaguna一些東西和一些其他的你可以使用'的std :: cout'寫信給你的主窗口和'的std :: cerr'對於目的地輸出另一個窗口。然後,運行程序前,走在其他窗口中得到它的名字,並回到主窗口,運行'./yourProgram 2>的/ dev/ttyXXXX'。如果您以後決定在一個窗口中想要所有的輸出,只需省略'2> ...'部分即可。 – 2017-06-24 09:20:01

相關問題