此代码返回终端窗口的大小。
def gettermsize():
s = struct.pack("HHHH", 0, 0, 0, 0)
a = struct.unpack('hhhh', fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ , s))
return (a[0], a[1])
它实际上在做什么?
最佳答案
一般来说,ioctrl 调用将允许运算符(operator)查询和/或设置物理或逻辑设备的各种特征 - 哪些值可用以及如何获取它们特定于设备和设备类型。在本例中,正在查询标准输出控制台(sys.stdout.fileno()
提供的句柄))以查找终端设备 (termios
) ,窗口大小 (TIOCGWINSZ
),并且它需要一个 4 个 16 位无符号值的结构才能工作 (s
),它返回 4 个有符号值,其中前两个大概用作高度和宽度。需要打包/解包值的原因是这实际上是直接调用 C 代码。
关于python - 这段 Python 代码中发生了什么来获取终端窗口大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637640/