Вот, к примеру, ChatGPT, в отличие от местных острословов, не вставлял шпильку в каждой реплике, а конкретно и по делу ответил мне на заданный вопрос.
Цитата:
/ask через какие механизмы Linux-программы, выполняемые в терминале (например, mc, EMACS или nano) узнают об изменении размера терминала
и ответ (я его сократил до тезисов):
Цитата:
* использование символа ESC (\033) в сочетании с последовательностью управляющих символов, принадлежащих к группе ANSI Escape. Когда размер терминала изменяется, терминал отправляет соответствующую последовательность символов в программу, которая может использовать эту информацию для перераспределения своего интерфейса.
* для получения информации о размере терминала можно использовать системный вызов ioctl с аргументом TIOCGWINSZ. Этот вызов возвращает текущий размер терминала в виде структуры winsize, которая содержит количество строк и столбцов в терминале.
* Библиотека ncurses предоставляет набор функций, которые позволяют программам легко управлять выводом на терминале и обрабатывать события изменения размера терминала.
Здесь, правда, неясно, какие механизмы находятся внутри ncurses. Например, она может содержать обёртку для обработки управляющих символов, подключая его к механизму событий. Машина не сказала, что я могу установить функцию обратного вызова, которая будет вызвана при изменении размера терминала. Но в случае терминала как раз использование ESC-последовательностей является наиболее логичным, т.к. укладывается в общую идеологию последовательного способа взаимодействия программ, легко передаётся по сети и т.п.