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

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

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

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

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

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

  • Как выглядят крупные компьютеры, на которых были подключены реальные терминалы?
  • Новая строка после командной строки
  • Попытка загрузить новые скины Yakuake на моей установке Arch / Gnome, но не может
  • Debian - Как изменить цвета фона терминала
  • Могу ли я настроить терминал XFCE, чтобы открыть все новые терминалы в виде вкладок одного окна?
  • Как реплицировать (fork) текущий терминал
  • Echo / Печать текста в цвете данного шестнадцатеричного кода (независимо от Xresources / Xdefaults)
  • Исходный сценарий оболочки автоматически в терминале
  • 2 Solutions collect form web for “несмотря на то, что поток”

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

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

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

    Interesting Posts

    Выборочно заменяете значки в теме набора значков?

    Как список слов, разделенных пробелами, складывается в табличные столбцы, которые соответствуют ширине терминала

    Установите Apache и PHP на Centos без менеджера пакетов (yum, rpm …)

    Как запустить программу без ввода ./?

    Каков наиболее подходящий способ анализа значений из этого вывода?

    Разрешить определенному пользователю sudo пользователям, входящим в группу X

    Какой инструмент может сказать мне дистрибутив Linux, который работает, когда uname является общим?

    XMonad не очищает экран при изменении рабочего пространства

    Файловая система fio повреждена (XFS на mdadm, RAID10)?

    Средние строки с одинаковым первым столбцом

    Rsync, который обрабатывает разумно

    Как создать виртуальную машину с нуля с помощью virsh?

    Мариадб заменил MySQL на Yum Ugrade

    Настройка Getty для аппаратного терминала

    Perl – / etc / shadow – Отказано в доступе

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