程序如何与 Linux 上的 X11 服务器通信?
How does a program communicate with the X11 Server on Linux?
所以我为此做了很多研究,但找不到答案。
它使用命名管道吗?本地主机上的套接字? d 总线 ?
我可以截取并查看 X 客户端向 X 服务器发送的带有 bash 行的二进制消息吗?
当然这只是为了教育目的。我不打算构建可以拦截此类消息的软件。
它使用名称为 /tmp/.X11-unix/X${DISPLAYNUMBER}
的 Unix 域套接字。现在 Linux 支持 Unix 域套接字的特殊命名,称为 "abstract namespace UDS",其中路径以 @
为前缀,但其他方面相同。
要添加到另一个答案,还有 TCP/IP。事实上,一个程序可以在完全不同的机器上使用 X11 服务器 运行,甚至可以环游世界。
您可以使用例如:
DISPLAY=192.168.1.56:0 xterm
程序 xterm(1) 将使用 TCP/IP 连接连接到 $DISPLAY 指示的机器。
所以我为此做了很多研究,但找不到答案。
它使用命名管道吗?本地主机上的套接字? d 总线 ?
我可以截取并查看 X 客户端向 X 服务器发送的带有 bash 行的二进制消息吗?
当然这只是为了教育目的。我不打算构建可以拦截此类消息的软件。
它使用名称为 /tmp/.X11-unix/X${DISPLAYNUMBER}
的 Unix 域套接字。现在 Linux 支持 Unix 域套接字的特殊命名,称为 "abstract namespace UDS",其中路径以 @
为前缀,但其他方面相同。
要添加到另一个答案,还有 TCP/IP。事实上,一个程序可以在完全不同的机器上使用 X11 服务器 运行,甚至可以环游世界。
您可以使用例如:
DISPLAY=192.168.1.56:0 xterm
程序 xterm(1) 将使用 TCP/IP 连接连接到 $DISPLAY 指示的机器。