несмотря на то, что поток

Укороченная версия

Могу ли я сохранить входной символ ( > например) в нижней части терминала, чтобы пользователь мог вводить, несмотря на то, что текст течет выше?

Длинная версия

Я делаю многопроцессорное приложение, которое в основном касается текстового потока (с вводом и выходом telnet в ближайшем будущем). Я поместил приглашающий символ > с printf, чтобы сообщить пользователю, что он может писать. Но если некоторые дети немного опоздают на предыдущий ввод, вывод записывается после этого приглашения, и даже если он технически все еще работает, это не очень практично.

Есть ли способ поддерживать пустую строку с подсказкой для ввода, даже если текст «прокрутка» выше?

2 Solutions collect form web for “несмотря на то, что поток”

Вы можете создать объект-оболочку, который сериализует все выходные потоки. Вероятно, вам понадобятся мьютексы, чтобы синхронизировать это.

Затем вы можете распечатать «>» после выхода каждого дочернего процесса, таким образом, последняя строка всегда будет «>».

Для мертво-простой версии, которая просто «всегда поддерживает строку подсказки после самой последней выходной строки», вы можете сделать что-то вроде вывода "\routput here\n> " (чтобы перезаписать самую последнюю строку приглашения, записать вывод, затем напишите новую строку подсказки). Если вы хотите, чтобы пользователь мог сохранять свой вход через новые выходные строки, вам нужно сделать что-то вроде немного, как readline / libedit . (Может быть, есть возможность для тех, кто это сделает, я не уверен.) Общий процесс состоял бы в том, чтобы перейти в режим cbreak / raw, поддерживать буфер в памяти только того, что пользователь набрал, а затем вывести его снова после подсказки всякий раз, когда вы пишете новую выходную строку.

  • автоматически отключать приложение при его запуске с терминала
  • Как автоматически открыть окно терминала при нажатии на скрипт?
  • Как убедиться, что команда не прерывается, даже если терминал закрыт?
  • ssh от экрана приводит к неизвестной ошибке терминала
  • Печать заполненных форм в терминале
  • Почему чтение из двух связанных pty вызывает бесконечный цикл?
  • Как получить оболочку на экране?
  • Как bash извлекает то, что было написано на терминале (без нажатия Enter)?
  • Echo / Печать текста в цвете данного шестнадцатеричного кода (независимо от Xresources / Xdefaults)
  • подсветка синтаксиса emacs не работает на моем SSH-клиенте
  • Debian - Как изменить цвета фона терминала
  • Linux и Unix - лучшая ОС в мире.