【问题标题】:How high do X11 display numbers go?X11显示数字有多高?
【发布时间】:2021-10-07 20:29:01
【问题描述】:

displayno 是 X11 display name 的一部分。

我见过几个定义解释它是一个从 0 向上的数字,但我还没有看到任何文档解释是否有最大显示数字。

显示的最高数字是多少?它是在哪里定义的?


这个问题的背景是我想了解PyVirtualDisplay的Display number分配算法。我还没有理解 /tmp/.X*lock 文件的作用,但看起来分配例程会选择总是增加显示数量,这表明在重复调用的某个阶段它可能会达到限制并跌倒,特别是如果它很小。

【问题讨论】:

    标签: x11


    【解决方案1】:

    简短回答:定义不明确。

    更长的答案:这取决于您碰巧使用的流协议。在 TCP 中,它恰好被简单地添加到基本端口号 6000,这意味着服务器将无法在显示号 59535 附近的某个位置启动。在 unix 域套接字上,它只是一个整数附加到 /tmp/.X11-unix 下的套接字名称(所以如果你用-nolisten tcp 启动服务器,你可以有几十亿左右)。在 DECnet...好吧,我不知道,但如果您发现自己处于需要关心的境地,我非常抱歉。

    可能为后代提供更好的答案:如果您使用的是足够新的 X 服务器,则可以使用 -displayfd <n> 参数告诉服务器简单地选择一个可用的显示编号,然后将其写入在该文件描述符上返回给您。认为这是 xserver 1.13 中的新功能,应该会在 2012 年末发布。

    【讨论】:

      【解决方案2】:

      21474836472**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
      ...
      

      【讨论】:

        猜你喜欢
        • 2010-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-11
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        • 2016-05-30
        相关资源
        最近更新 更多