2014-09-28 124 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