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])

それは実際に何をしているのですか?

4

1 に答える 1

2

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

于 2013-07-14T08:37:36.460 に答える