/usr/bin/gnome-terminal 中发生了什么?

/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-terminals 时应该会运行多个进程。但是,输出中gnome-terminal似乎总是只有一个进程。/usr/lib/gnome-terminal/gnome-terminal-server --app-idps

脚本运行时发生什么事?

而所谓“代表”的进程又在哪里呢gnome-terminal

操作系统:Ubuntu 15.04

答案1

单一进程/usr/lib/gnome-terminal/gnome-terminal-server是处理所有 gnome-terminal 窗口的进程。

如果命令尚未运行,gnome-terminal则会启动该命令,或者连接到现有实例并要求其打开一个新窗口。gnome-terminal-server

如果每次调用命令gnome-terminal都会打开一个新窗口,因此每个终端窗口都由其自己的单独进程处理,那么您将无法在它们之间拖放选项卡。我认为这是这种设计背后最重要的原因。可能还有其他原因,我不确定。

相关内容