c - 打印输出时如何保持stdin和stdout分开?

标签 c shell unix stdout stdin

考虑以下每隔几秒输出一些文本的代码:

int main (void)
{
    int status = 0;
    if (fork() == 0)
    {
        while (1)
        {
            printf ("whatever...\n");
            // printf ("\rwhatever...\n");
            sleep (3);
        }
    }
    while (wait (&status) > 0);
    return 0;
}

我遇到的问题是,如果我已经在终端中输入了一些文本,输出的文本将被添加到输入缓冲区的末尾,例如:

> whatever...
< something
> somethingwhatever...
<

我如何让它打印输出缓冲区并同时保持输入缓冲区完好无损,如:

> whatever...
< something
> whatever...
< something

最佳答案

如果您依赖终端提供的标准 I/O 处理,则您无法控制这方面。

您可以做的是手动处理。您可以使用 tputncurses 将输入和输出分成两列,或者您可以关闭输入回显(输入不会显示)并自己显示输入。

第二种方法的问题在于它很可能会让用户感到困惑。

关于c - 打印输出时如何保持stdin和stdout分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33999852/

相关文章:

linux - 使用 uuencode 发送邮件

linux - Tmux: Pane 标题 (#T) 报告为 "fg",而不是提供更多信息的内容

c - 错误: void value not ignored - in simple c program

C代码错误: expected ';' before '{' token

c - C 中的信号处理

shell - Cron xdotool 不运行

c - C 中的位运算

c - 开关盒跌落场景

Linux文件分割

windows - 为什么 sort 命令在法语语言环境中对 "œ"和 "oe"进行无差别排序?