我在开发遗留 XWindows 应用程序时遇到了一个有趣的问题。

由于不值得解释的原因,我将 ClientMessage 从命令行实用程序发送到 GUI 应用程序。大多数消息最终具有相同的内容,因为消息的目的是通过某些侧管道触发同步通信过程。我注意到有时我会发送两条消息,但只有一条被送达。我已经追踪到这两个消息具有相同的内容并且在同一秒内发送(IOW,发送的日志时间戳是相同的数字)。一旦我在消息中添加了一些虚拟内容以使它们全部不同,问题就消失了。

这发生在两个不同的 X 服务器上:vncserver 和 Exceed。我是否遇到了一些我不知道的 XWindows 功能 - 某种消息限制/压缩?有人遇到过这种事情吗?

有帮助吗?

解决方案

据我所知,X 服务器不应该压缩客户端消息,但也许某些 X 工具包(Motif、Xaw 等)确实会压缩它们。这是我要寻找的第一件事 - 也许接收消息的 GUI 应用程序在应用程序代码看到它之前正在工具包内的某个位置进行压缩。

话又说回来,vncserver 和 Beyond 可能比其他 X 服务器更注重远程使用,并且可以想象,它们可能包含一些不明智的压缩黑客。我读过很多 X 规范并编写了很多 X 代码,但从未听说过这种行为。

一个随机的不太可能的想法,确保在退出之前在命令行应用程序的末尾有一个 XFlush() 或 XSync() ,以确保在关闭之前将这些消息写入套接字。但我不知道如果这是问题所在,为什么消息内容会很重要。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top