如何從xid(X窗口標識符)獲取pid?如何獲得給定PID的xid列表?如何從pid獲得xid(反之亦然)?
(假設所有的應用程序與DISPLAY=:0
運行,無需網絡透明度正在使用中)
我期待這樣的:
- 挖在/ proc/$ PID/FD /跟蹤連接X服務器
- 跟隨該連接,深入探索
/proc/`pidof X`/fd
- 挖掘X內部,因爲它應該知道如何將連接映射到窗口。
如何從xid(X窗口標識符)獲取pid?如何獲得給定PID的xid列表?如何從pid獲得xid(反之亦然)?
(假設所有的應用程序與DISPLAY=:0
運行,無需網絡透明度正在使用中)
我期待這樣的:
/proc/`pidof X`/fd
您可以使用xprop -id <windowid> _NET_WM_PID
來獲取有問題窗口的PID屬性。您應該知道該窗口的窗口ID,並非所有應用程序都設置了_NET_WM_PID
原子。
很少有應用程序正確設置pid,所討論的應用程序(xbmc)沒有。 – 2011-04-04 17:28:11
是的。但這是我知道的唯一可行的方法。 – 2011-04-04 17:32:43
如何找到我自己?如何跟蹤連接到X服務器,然後連接到該連接的xid? – 2011-04-04 19:34:22
這工作,我的目的:
=^_^= [email protected]:~$ XID=0x340001c
=^_^= [email protected]:~$ printf "%d\n" $XID # Convert from hex to decimal
54525980
=^_^= [email protected]:~$ xdotool getwindowpid 54526066
20639
=^_^= [email protected]:~$ ps 20639
PID TTY STAT TIME COMMAND
20639 ? Ssl 116:25 /usr/lib/firefox/firefox
一般:一點也不。原因是X-Window系統支持固有的網絡連接(即使你不使用它)。我能想到的唯一可行的方法是預期的內部挖掘 - 這可能與x服務器和x服務器不同。 – flolo 2011-04-04 20:04:54
X服務器是Xorg。我想要的解決方案比在非聯網的情況下工作。是不是很明顯,任何Gived系統都有可能? – 2011-04-04 21:38:28
「明顯」的解決方案將涉及醜陋的管道和膠帶,因爲這不是X設計的工作方式。 – 2011-04-05 01:09:48