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

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

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

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

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

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

  • Выделите последнюю команду в терминале? (например, значки терминалов OS X)
  • Могу ли я настроить терминал XFCE, чтобы открыть все новые терминалы в виде вкладок одного окна?
  • Почему удаленная консоль не использует весь размер терминала
  • LS_COLORS для 256-цветного терминала
  • При перемещении текста текст перемешался
  • Почему я могу открыть корневой терминал только один раз?
  • Безопасно ли закрывать оболочку, просто нажав «X» или используя «ctrl + d»?
  • Пробел цвет фона при достижении конца терминала
  • 2 Solutions collect form web for “несмотря на то, что поток”

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

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

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

    Interesting Posts

    Как удалить пакет в системе на основе debian БЕЗ удаления зависимостей?

    Получить содержимое файла из первого экземпляра в последний экземпляр некоторой произвольной строки

    Звуковой тон / синусоидальный генератор с частотным датчиком

    Обмен одной колонки из файла1 с файлами из файла2

    Автоматическое обновление системы с помощью Oracle Linux 7

    ошибка виртуализации: методы установки "не могут быть указаны для гостей контейнера"

    linux, базовый тест для обнаружения механических дисков

    декомпрессии bzip2, изменения и сжатие текстового файла по конвейеру

    Firejail или chroot

    Как запустить 2FA-используя OpenVPN с systemd?

    Как определить, на какой файловой системе существует каталог?

    Выход из бесконечного цикла перезагрузки при запуске (rc.local)

    Как добавить путь поиска значков в kde4 / plasma5?

    Как удалить пароль root на Debian?

    Что означает «Недопустимый аргумент» в Solaris?

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