具有并发输出/输入可能性的C ++控制台

时间:2019-03-30 08:32:08

标签: c++ c libreadline

我正在尝试使用“交互式控制台”(可能是错误的术语)创建一个简单的项目,基本上可以安全地将输入和输出同时显示在屏幕上。我一直在尝试使用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个小时左右,现在没有运气能找到做我上面描述的事情的机会。

谢谢。

0 个答案:

没有答案