Консоль для ввода команд - PullRequest
0 голосов
/ 19 ноября 2010

Я хочу создать консоль отладки для моего приложения. Он должен выводить некоторые данные и принимать входные команды. Как я могу это сделать? Лучший способ - обновить консоль, например: рисовать информацию и запрашивать ввод после данных Я занимаюсь разработкой под Linux. Например, gdb может принимать данные с консоли.

1 Ответ

5 голосов
/ 19 ноября 2010

Если вы знакомы с программированием сокетов (или вообще с любым другим механизмом IPC), вы можете включить некоторый слушатель в вашем приложении и разработать внешнее приложение, которое выполнит все «консольные» действия за вас. , при общении с основным приложением.

Предположим, у вас есть приложение, которое имеет одну кнопку и одну текстовую метку, и каждый раз, когда вы нажимаете эту кнопку - текстовая метка увеличивается на 1, с 1 до 2 до 3 и т. Д.

Вы можете встроить слушатель сокета в это приложение. Когда слушатель сокета принимает новое входящее соединение, вы запускаете поток соединения, который может:

  1. Получить команду "shutdown"
  2. Получить команду «сброс счетчика»
  3. Отправка обновлений о текущем числе на каждый клик
  4. и т.д.

Затем вы создаете другое внешнее приложение, которое подключается к основному приложению и отправляет ему сообщения на основе консольного ввода, получаемого от пользователя. Он также будет прослушивать входящие обновления и показывать их пользователю.

Использование внешнего приложения для отладки и управления вашим основным приложением чрезвычайно полезно, со следующими преимуществами:

  1. Независимо от того, как глючит приложение отладки, оно не может повредить версию выпуска вашего основного приложения.
  2. Весь код, относящийся к управлению консолью, который является избыточным для вашего основного приложения, может храниться вне основного приложения.
  3. Создание из него двух проектов может облегчить совместную работу с кем-то еще, если вы оба знаете о протоколе между двумя сторонами.
  4. Реализация предложенного мной означает, что вы можете удаленно отлаживать свое приложение, если у вас нет доступа к основному приложению (например, если оно находится на сайте клиента).
...