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-terminals 时应该会运行多个进程。但是,输出中gnome-terminal
似乎总是只有一个进程。/usr/lib/gnome-terminal/gnome-terminal-server --app-id
ps
脚本运行时发生什么事?
而所谓“代表”的进程又在哪里呢gnome-terminal
?
操作系统:Ubuntu 15.04
答案1
单一进程/usr/lib/gnome-terminal/gnome-terminal-server
是处理所有 gnome-terminal 窗口的进程。
如果命令尚未运行,gnome-terminal
则会启动该命令,或者连接到现有实例并要求其打开一个新窗口。gnome-terminal-server
如果每次调用命令gnome-terminal
都会打开一个新窗口,因此每个终端窗口都由其自己的单独进程处理,那么您将无法在它们之间拖放选项卡。我认为这是这种设计背后最重要的原因。可能还有其他原因,我不确定。