Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
msys2_mingw [2022/09/28 10:51] – [Компилятор и его запуск] adminmsys2_mingw [2022/09/28 10:57] – [Консольные полноэкранные приложения] admin
Line 151: Line 151:
 TODO. Параграф не дописан! Имеются проблемы со сборкой static! TODO. Параграф не дописан! Имеются проблемы со сборкой static!
  
-При портировании UNIX-приложений на **MSYS2** часто возникают сложности с работой "полноэкранных" текстовых приложений, TUI (Text User Interface) т.е. требущих управления экраном.+При портировании UNIX-приложений на **MSYS2** часто возникают сложности с работой "полноэкранных" текстовых приложений, TUI (Text User Interface) т.е. требущих управления экраном и управления курсором.
  
-Тут надо немного углубиться в теорию. С точки зрения UNIX мы имеем две сложно взаимодействующих абстракции:+Тут надо сначала немного углубиться в теорию. С точки зрения UNIX мы имеем две сложно-взаимодействующих абстракции:
   - [[https://ru.wikipedia.org/wiki/Стандартные потоки|Стандартные потоки]] STDIN/STDOUT/STDERR. Это псевдо-файлы, которые передаются при старте UNIX программы, с номерами файловых десткрипторов 0,1, и 2. Довольно часто, это не терминал, а вывод из предыдущей программы (pipe) или реальный файл.   - [[https://ru.wikipedia.org/wiki/Стандартные потоки|Стандартные потоки]] STDIN/STDOUT/STDERR. Это псевдо-файлы, которые передаются при старте UNIX программы, с номерами файловых десткрипторов 0,1, и 2. Довольно часто, это не терминал, а вывод из предыдущей программы (pipe) или реальный файл.
-  - Терминал TTY. У терминала в UNIX имеется множество функций и атрибутов. Например, имеется API управления дисциплиной линии (всякие RTS/CTS), различные режимы ввода (с эхо или без) termio/termios, возможность переключения raw/cooked режимов, специальные функции управления заданиями (job control, например обработка CTRL-C, CTRL-Z) и т.д. Кроме того, у каждой разновидности терминала имеется база, описывающая его систему команд, в основном через ESC-последовательности (termcap/terminfo).+  - Терминал TTY. У терминала в UNIX имеется множество функций и атрибутов. Например, имеется API управления дисциплиной линии (всякие RTS/CTS), различные режимы ввода (с эхо или без) [[https://man7.org/linux/man-pages/man3/termios.3.html|termio/termios]], возможность переключения raw/cooked режимов, а также специальные функции управления заданиями (job control, например обработка CTRL-C, CTRL-Z) и т.д. Кроме того, у каждой разновидности терминала имеется база, описывающая его систему команд, в основном через ESC-последовательности (termcap/terminfo).
  
 На Windows совершенно другая идеология управления консолью (WinAPI Console). (Пример: [[https://eax.me/winapi-console-app/|Пишем простое консольное приложение на чистом WinAPI]]). Поэтому и возникает необходимость в эмуляторе терминала и промежуточной библиотеке типа ''msys-2.0.dll'' или ''cygwin.dll'', которая имитирует (с разной степенью успешности) поведение UNIX системы. Тем или иным способом в оболочках типа **MSYS2** и **CYGWIN** эта проблема решена. Но с "автономными" консольными Windows приложениями неколько сложнее. На это накладывается взаимодействие c ''MSVCRT.DLL'', которая имитирует файловые потоки STDIN/STDOUT/STDERR и также вносит свои особенности. На Windows совершенно другая идеология управления консолью (WinAPI Console). (Пример: [[https://eax.me/winapi-console-app/|Пишем простое консольное приложение на чистом WinAPI]]). Поэтому и возникает необходимость в эмуляторе терминала и промежуточной библиотеке типа ''msys-2.0.dll'' или ''cygwin.dll'', которая имитирует (с разной степенью успешности) поведение UNIX системы. Тем или иным способом в оболочках типа **MSYS2** и **CYGWIN** эта проблема решена. Но с "автономными" консольными Windows приложениями неколько сложнее. На это накладывается взаимодействие c ''MSVCRT.DLL'', которая имитирует файловые потоки STDIN/STDOUT/STDERR и также вносит свои особенности.
Navigation