如何从xid(X窗口标识符)获取pid?如何获取给定pid的xid列表?
(假设所有应用程序都使用DISPLAY=:0
运行,而不使用网络透明度)
我期待的是:
/proc/`pidof X`/fd
答案 0 :(得分:4)
您可以使用xprop -id <windowid> _NET_WM_PID
来获取相关窗口的PID属性。您应该知道窗口的窗口ID,而不是所有应用程序都设置_NET_WM_PID
原子。
答案 1 :(得分:1)
这适用于我的目的:
=^_^= izkata@Izein:~$ XID=0x340001c
=^_^= izkata@Izein:~$ printf "%d\n" $XID # Convert from hex to decimal
54525980
=^_^= izkata@Izein:~$ xdotool getwindowpid 54526066
20639
=^_^= izkata@Izein:~$ ps 20639
PID TTY STAT TIME COMMAND
20639 ? Ssl 116:25 /usr/lib/firefox/firefox
答案 2 :(得分:1)
wmctrl 列出窗口、它们的 xid 和可选的进程的 pid。因此,假设您的 $pid
只有一个窗口,您可以使用
wmctrl -ulp | tr -s ' ' | cut -d" " -f1,3 | grep $pid | cut -d" " -f1
相反,假设 xid 是六进制,获取 pid
wmctrl -ulp | tr -s ' ' | cut -d" " -f1,3 | grep $xid | cut -d" " -f2
.