【发布时间】:2014-06-15 13:15:59
【问题描述】:
谁能向我解释为什么 XOpenDisplay() 不会因显示名称错误而失败?只要名称遵循语法约定,它似乎总是成功 - 即使指定的主机名不存在。 XOpenDisplay() 似乎只有在字符串使用错误的语法时才会失败,例如
d = XOpenDisplay("foobar"); // fails - presumably because of bad syntax in string
d = XOpenDisplay("foobar:0.0"); // works - although there is no host named "foobar"
当指定一个不存在的主机名时,XOpenDisplay() 似乎回退到 $DISPLAY。那是应该的吗?我在 Xlib 文档中没有找到任何关于这些后备的信息。如果行为正确,有没有办法检查返回的显示是否真的将我连接到“foobar:0.0”,或者它是否只是 $DISPLAY 的后备?
【问题讨论】:
-
// works。不适合我。 -
你是对的,这似乎并不是在所有 Linux 上都会发生。我古老的 openSUSE 安装总是以错误的显示名称失败,即它的行为与预期的一样。但是,我安装的 Ubuntu 12.04 LTS 和 Linux Mint Maya 都显示了我上面介绍的行为。
-
您可能在某处拥有一个包罗万象的 DNS。
-
那么我该如何检查是否是这种情况?如果是这种情况,我当然不是故意这样做的,但是错误行为出现在两个完全不同的 Linux 版本上的事实恰恰说明了错误配置。但如果你告诉我去哪里看,我可以检查一下。我已经检查了 /etc/hosts 但我唯一修改的是将 NetBIOS 名称分配给我网络中不同机器的固定 IP 地址。没有别的了。
-
从 shell 尝试类似 'host foobar' 或 'ping foobar' 之类的东西。