Я пытаюсь создать простой проект с «интерактивной консолью» (это может быть неправильный термин), в котором я могу, в основном, безопасно выводить ввод и вывод на экран одновременно.Я пытался использовать программу 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 часов или около того, но мне не повезло найти что-то, чтобы сделать то, что я описал выше.
Спасибо.