我注意到没有名为“ 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
Run Code Online (Sandbox Code Playgroud)
所以我输入了gnome-terminal &. 输出如下:
$ gnome-terminal &
[2] 8865
$
[2]+ ?? gnome-terminal
$ echo $LANG
ja_JP.UTF-8
Run Code Online (Sandbox Code Playgroud)
这个结果好像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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
如果在gnome-terminal脚本运行时调用子进程,则当我打开 gnome-terminals 时应该运行多个进程。然而,/usr/lib/gnome-terminal/gnome-terminal-server --app-id在ps的输出中似乎总是只有一个进程。
脚本运行时发生了什么?
而代表所谓“ gnome-terminal”的过程又在哪里呢?
操作系统:Ubuntu 15.04
单个进程/usr/lib/gnome-terminal/gnome-terminal-server是处理所有 gnome 终端窗口的进程。
如果该命令尚未运行,则会gnome-terminal启动该命令gnome-terminal-server,或者连接到现有实例并要求它打开一个新窗口。
如果命令的每次调用gnome-terminal本身都会打开一个新窗口,因此每个终端窗口都由其自己的单独进程处理,则您将无法在它们之间拖放选项卡。这是我相信这个设计背后最重要的原因。可能还有其他原因,我不确定。
| 归档时间: |
|
| 查看次数: |
6057 次 |
| 最近记录: |