Доброе утро.
Объясните, почему в следующем коде, получающем размеры терминала:
data = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, '1234')
self.size = struct.unpack('hh', data)[1]
используется строка '1234'?
В одном списке рассылке указано,
Now the '1234' question. This bit _is_ a bit ugly. ioctl() expects a third parameter which is input data in the case of «write-like» ioctl() calls. If the ioctl() is a «read-like» call, the third argument is merely a string that specifies how many data bytes the ioctl call is expected to return. In this case the TIOGWINSZ ioctl will return 4 bytes of data (two 16-bit integers), so we pass it a 4 byte string to tell the ioctl module how much memory to allocate for the value to be returned.
Но, при использовании любой другой четырёхбайтной строки, допустим '4321', 'abcd' код не работает.