如何从 pid 获取 xid(反之亦然)?
如何从 xid(X 窗口标识符)获取 pid?如何获取给定 pid 的 xids 列表?
(假设所有应用程序都使用 DISPLAY=:0
运行,没有使用网络透明性)
我期待类似的内容:
- 挖掘 /proc/$pid/fd/ 来跟踪与 X 服务器的
- 连接连接,挖掘
/proc/`pidof X`/fd
- 挖掘 X 内部,因为它应该知道如何将其连接映射到 Windows。
How do I get the pid from the xid (X window identifier)? How do I get the list of xids for a given pid?
(Assuming all applications run with DISPLAY=:0
, without network transparency being in use)
I'm expecting something like:
- Dig in /proc/$pid/fd/ to track connection to X server
- Follow that connection, dig in
/proc/`pidof X`/fd
- Dig inside X as it should know how to map connections to it to windows.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 xprop -id; _NET_WM_PID 获取相关窗口的 PID 属性。您应该知道窗口的窗口 ID,并且并非所有应用程序都设置
_NET_WM_PID
原子。You could use
xprop -id <windowid> _NET_WM_PID
to get the PID property of the window in question. You should know the window id of the window and not all applications set the_NET_WM_PID
atom.这适用于我的目的:
This works for my purposes:
wmctrl 列出窗口、它们的 xids 以及可选的进程的 pid。因此,假设您的
$pid
只有一个窗口,您可以使用 获取相应的 xid,反之,假设 xid 为十六进制,则获取 pid
。
wmctrl lists windows, their xids and optionally the pid of their process. So assuming there is only one window with your
$pid
, you could get the corresponding xid withand conversely, assuming the xid is in hexa,get the pid
.