Откуда я могу начать создавать консоль для моих программ на C ++?
Мне нужна минимальная консоль для запуска и управления консольными приложениями, причина в том, что мне это нужно, потому что мне нужно упаковать все в один исполняемый файл и создать и управлять моей маленькой средой.
Под термином «консоль» я подразумеваю только терминал для запуска моей программы, ни больше, ни меньше, Я не хочу, чтобы моя консоль взаимодействовала с системой нижележащих слоев, заботятся только о моих консольных приложениях.
Поэтому мой вопрос таков: учитывая приложения на C ++ или интерпретатор командной строки, какое ноу-хау требуется для создания терминала, способного взаимодействовать с этим приложением, а также создавать отчеты и управлять обычным вводом (std :: cout, специальные символы) как звонки, ввод текста от пользователя и тд)?
Я думаю, что это слишком большой вопрос для «одного ответа».
Есть три компонента проблемы:
Я верю хотя бы 1 & 2 явно различаются для каждого основного типа платформы, по крайней мере, они различаются на платформах Windows и Symbian против Linux / Unix. Я считаю, что во многом платформа Android может достичь этого тем же методом, что и Linux.
Третья часть, помимо всех сложностей эмуляции терминала VT100 или ANSI (что нетривиально, потому что существует большое количество различных escape-кодов для анализа и интерпретации, но вы, вероятно, можете избежать использования всего лишь полдюжины или так для начала).
Я ожидаю, что помимо «кода, специфичного для платформы», этот проект требует нескольких тысяч строк кода, и если вы знаете, с чего начать (то есть вы знакомы с fork(), execl()
и т.д. в Linux или их эквивалентах в другой ОС, и знакомы с перенаправлением, если stdin
, stderr
а также stdout
с помощью dup2()
и аналогичные функции, опять же с резервированием для конкретных имен ОС, вы можете получить что-то, что примерно работает через несколько недель. Если вы понятия не имеете об этих вещах, вам придется сначала научиться пользоваться этими функциями.
Конечно, для эмуляции терминала, например «нарисовать строку текста здесь», «вставить пустую строку в строке X», «очистить экран от этой позиции» или «очистить оставшуюся строку» и т. Д., И т. Д., Потребуется значительное количество работы, чтобы охватить ВСЕ различные варианты и варианты. Особенно, если вы хотите сделать это на дисплее переменного размера, а не на «фиксированных 80 столбцах и 25 строках», как поддерживали оригинальные терминалы VT100. И я предполагаю, что вы уже написали код для рисования основного текста в OpenGL или OpenVG (поддерживает ли OpenVG текст изначально или вы должны делать это как «рисовать растровое изображение» — я не могу точно вспомнить, как он работает — я не был Я не работаю над текстом в Symbian Graphics, поэтому меня никогда не волновало, как это работает).
Других решений пока нет …