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

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

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

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

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

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

  • Количество символов имен папок печати
  • Принудительный telnet / ssh использовать crtl-H для backspace
  • Кодировать с ffmpeg с помощью avi to mp4
  • Скопируйте длинный однострочный текст с терминала с нежелательной строкой изменения
  • Как изменить требования к экранам программ bash?
  • Выполнить команду внутри другой команды
  • Цветной выход?
  • Команда «Я» на linux ubuntu
  • 2 Solutions collect form web for “несмотря на то, что поток”

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

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

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

    Linux и Unix - лучшая ОС в мире.