在/ usr / bin / gnome-terminal中发生了什么?
我注意到没有名为“ gnome-terminal
”的进程,尽管我使用的是所谓的“ gnome-terminal
”,它是通过单击桌面上菜单栏上的图标来调用的。
$ ps -au | grep gnome cul8er 8763 0.1 0.8 554960 33268 pts/22 Sl 05:16 0:00 /usr/lib/gnome-terminal/gnome-terminal-server --app-id com.canonical.Terminal.AnAuzDeiSeoqQhlGKbPNPeHhAROwBwtP cul8er 8771 0.0 0.0 14852 1832 pts/22 S 05:16 0:00 gnome-pty-helper cul8er 8821 0.0 0.0 14656 2232 pts/23 S+ 05:27 0:00 grep --color=auto gnome
所以我输入了gnome-terminal &
。 输出如下:
$ gnome-terminal & [2] 8865 $ [2]+ 終了 gnome-terminal $ echo $LANG ja_JP.UTF-8
这个结果似乎表明,当显示终端仿真器时, gnome-terminal
的进程立即退出。 如果是真的,为什么我可以看到没有与之关联的进程的新终端?
所以我检查了命令gnome-terminal
:
$ which gnome-terminal /usr/bin/gnome-terminal $ file /usr/bin/gnome-terminal /usr/bin/gnome-terminal: Python script, ASCII text executable
gnome-terminal
是一个python
脚本。
我看着它。 我无法理解因为我不知道python
,但是我注意到/usr/lib/gnome-terminal/gnome-terminal-server --app-id
,它显示在ps
的输出中,与此相关问题。 但我不知道’ subprocess
‘和’ Popen
‘是什么意思。
subprocess.Popen(['/usr/lib/gnome-terminal/gnome-terminal-server', '--app-id', name], stdout=subprocess.DEVNULL, stdin=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
如果在运行gnome-terminal
脚本时调用子进程,则在打开gnome-terminal时应运行多个进程。 但是,似乎ps
的输出中只有一个进程/usr/lib/gnome-terminal/gnome-terminal-server --app-id
。
脚本运行时发生了什么?
代表所谓的“ gnome-terminal
”的过程在哪里?
操作系统:Ubuntu 15.04
单个进程/usr/lib/gnome-terminal/gnome-terminal-server
是处理所有gnome-terminal窗口的进程。
命令gnome-terminal
会激活gnome-terminal-server
如果它尚未运行),或连接到现有实例并要求它打开一个新窗口。
如果每次调用命令gnome-terminal
本身都会打开一个新窗口,因此每个终端窗口都由它自己独立的进程处理,那么你将无法在它们之间拖放选项卡。 这是我相信这个设计背后最重要的原因。 可能还有其他原因,我不确定。