o que está acontecendo em / usr / bin / gnome-terminal?

2

Percebi que não havia processos com o nome " gnome-terminal ", embora eu estivesse usando o chamado " gnome-terminal ", que era chamado clicando no ícone na barra de menus na área de trabalho.

$ 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

Então eu digitei gnome-terminal & . a saída foi a seguinte:

$ gnome-terminal &
[2] 8865
$ 
[2]+  終了                  gnome-terminal
$ echo $LANG
ja_JP.UTF-8

Este resultado parece mostrar que o processo de gnome-terminal saiu imediatamente quando o emulador de terminal foi exibido. Se for verdade, por que posso ver um novo terminal sem um processo associado a ele?

Por isso, verifiquei o comando 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 é um script python .

Eu olhei para isso. Eu não conseguia entender o suficiente porque eu não sei python , no entanto notei /usr/lib/gnome-terminal/gnome-terminal-server --app-id , que foi mostrado na saída de ps , está relacionado a esta questão. Mas eu não sei o que significa ' subprocess ' e ' Popen '.

subprocess.Popen(['/usr/lib/gnome-terminal/gnome-terminal-server',
                           '--app-id',
                           name],
                          stdout=subprocess.DEVNULL,
                          stdin=subprocess.DEVNULL,
                         stderr=subprocess.DEVNULL)

Se os subprocessos forem invocados sempre que o script gnome-terminal for executado, vários processos deverão ser executados quando eu abrir os terminais do gnome. No entanto, parece sempre que existe apenas um processo /usr/lib/gnome-terminal/gnome-terminal-server --app-id na saída de ps .

O que está acontecendo enquanto o script é executado?

E onde está o processo que representa o chamado " gnome-terminal "?

SO: Ubuntu 15.04

    
por cul8er 25.11.2015 / 21:52

1 resposta

4

O processo único /usr/lib/gnome-terminal/gnome-terminal-server é o processo que manipula todas as suas janelas gnome-terminal.

O comando gnome-terminal aciona gnome-terminal-server , se ainda não estiver em execução, ou se conecta à instância existente e solicita a abertura de uma nova janela.

Se cada chamada do comando gnome-terminal abrisse uma nova janela e, portanto, cada janela de terminal fosse manipulada por seu próprio processo separado, você não conseguiria arrastar e soltar as guias por elas. Eu acredito na razão mais importante por trás desse design. Pode haver outras razões também, não tenho certeza.

    
por egmont 26.11.2015 / 00:31