Я пытаюсь создать простой проект с «интерактивной консолью» (может быть, неправильный термин), где я могу в основном безопасно вводить и выводить данные на экран одновременно. Я пытался использовать программу GNU Readline, потому что думал, что она поможет мне достичь моих целей, но пока мне с ней не везло.
Пример программы ниже:
#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <thread>
#include <iostream>
#include <chrono>
int main()
{
// Configure readline to auto-complete paths when the tab key is hit.
rl_bind_key('\t', rl_complete);
std::thread foo([]() {
for (;;) {
std::cout << "hello world " << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
});
for(;;) {
// Display prompt and read input
char* input = readline("prompt> ");
// Check for EOF.
if (!input)
break;
// Add input to readline history.
add_history(input);
// Do stuff...
// Free buffer that was allocated by readline
free(input);
}
return 0;
}
Мой желаемый результат был бы
hello world
hello world
hello world
... keeps printing every second
prompt> I have some text sitting here not being disturbed by the above "hello world" output printing out every second
Обратите внимание, мне не нужно использовать библиотеку readline, но в этом примере программы я пробовал ее.
Возможно ли что-то подобное в C/C++? Я видел, как это делается на других языках программирования, таких как Java... поэтому я думаю, что это должно быть возможно на C или C++.
Есть ли библиотеки, поддерживающие это? Я искал Google в течение 2 часов или около того, и мне не удалось найти что-то, что я описал выше.
Спасибо.
ncurses
библиотеке и HOWTO по программированию NCURSES - person David C. Rankin   schedule 30.03.2019