このコードは、ターミナル ウィンドウのサイズを返します。
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])
それは実際に何をしているのですか?
このコードは、ターミナル ウィンドウのサイズを返します。
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
に、呼び出しにより、オペレーターは物理デバイスまたは論理デバイスのさまざまな特性を照会および/または設定できます。使用可能な値とその取得方法は、デバイスおよびデバイス タイプに固有です。この場合、標準出力コンソール ( によって提供されるハンドルsys.stdout.fileno()
) は、端末デバイス ( termios
)、ウィンドウ サイズ ( ) について照会されており、( )で機能TIOCGWINSZ
するには 4 つの 16 ビット符号なし値の構造体が必要です。s
、それはおそらく高さと幅として使用される最初の 2 つの符号付きの 4 つの値として返します。値をパック/アンパックする必要があるのは、これが実際には C コードを直接呼び出すためです。