Všiml jsem si, že všechny instance mate-terminálu, které spustím, ať už uvnitř mate-terminálu nebo přes tlačítko odkazu, mají stejné PID.
Mám například něco jako
$ wmctrl -lp
<omitted lines that don't matter>
0x03c0001f 1 7411 <hostname> Terminal
0x03c06b9f 1 7411 <hostname> Terminal
0x03c07349 1 7411 <hostname> Terminal
0x03c073f4 1 7411 <hostname> Terminal
0x03c0749f 1 7411 <hostname> Terminal
0x03c0754c 1 7411 <hostname> Terminal
0x03c075f9 1 7411 <hostname> Terminal
0x03c076a6 1 7411 <hostname> Terminal
0x0340000b 1 <pid1> <hostname> xeyes
0x0460000b 1 <pid2> <hostname> xeyes
což jasně ukazuje, že existuje více oken terminálu, všechna se stejným PID. Jak je uvedeno výše, nezáleželo na tom, zda byl proces spuštěn v terminálu nebo kliknutím na odkaz na liště nabídek . Nezáleželo ani na tom, zda jsem proces spustil nebo nespustil na pozadí uvnitř terminálu.
Jaké je zde použité pravidlo nebo „proč je tomu tak“?
Dříve jsem to chápal tak, že každý příkaz, který spustím v shellu, získá jedinečný PID.
Není to trochu nepraktické mít více terminálů se stejným PID?
Už je nemohu jednotlivě zabíjet pomocí PID.
Edit:Verze jádra:3.16.0-4-amd64
Přijatá odpověď:
Všechny instance Mate Terminal mají stejné PID, protože jsou ve skutečnosti jediným procesem, který náhodou zobrazuje více oken. Mate Terminal běží v jediném procesu, protože tak je aplikace navržena. Když spustíte příkaz mate-terminal
, kontaktuje existující proces a pošle mu pokyn k otevření nového okna.
Od Mate Terminal 1.8.1 můžete spustit mate-terminal --disable-factory
otevřít nové okno v novém procesu. Pozor, tato možnost byla z verze Gnome ve 3.10 odstraněna; Nevím, zda se vývojáři Mate rozhodli tuto změnu sloučit. Podobnou otázku týkající se terminálu Gnome naleznete v tématu Spuštění vícenásobných instancí procesu gnome-terminálu.