X11显示器号码最高能到多少?

11

displayno是X11显示名称的一部分。

我看到了几个定义,它们解释说这是一个从0开始的数字,但我没有看到任何文件解释是否存在最大显示编号。

最高的显示编号是多少?它在哪里定义?


这个问题的背景是,我正在尝试理解PyVirtualDisplay的显示编号分配算法。我还没有理解/tmp/.X*lock文件的作用,但它似乎是分配程序会选择不断增加的显示编号,暗示着如果它很小,在反复调用某个阶段时可能会达到限制并崩溃。

2个回答

17

简短回答:这没有明确定义。

更详细的回答是:这取决于您使用的流协议。在TCP中,它只是添加到基本端口号6000,这意味着服务器将在显示编号59535左右失败。通过unix域套接字,它只是作为整数附加到/tmp/.X11-unix下的套接字名称(因此如果您使用-nolisten tcp启动服务器,则可以拥有几十亿个或更多)。在DECnet中...好吧,我不知道,但如果您发现自己处于关注的情况中,我很抱歉。

可能更好的回答是:如果您使用足够新的X服务器,可以使用-displayfd <n>参数告诉服务器仅需选择可用的显示编号,并将其写回该文件描述符。我认为这是xserver 1.13中的新功能,应该在2012年底发布。


2

2147483647 which is 2**31 - 1

Xephyr :2147483647
Xephyr :2147483648 # Bad display name

通过暴力破解找到:

for ((i=4153577566; i > 0; i -= 10000000 )); do echo $i; Xephyr :$i 2>/dev/null && break; done
for ((i=2153577566; i > 0; i -= 100000 )); do echo $i; Xephyr :$i 2>/dev/null && break; done
for ((i=2147577566; i > 0; i -= 1000 )); do echo $i; Xephyr :$i 2>/dev/null && break; done
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接