代码之家  ›  专栏  ›  技术社区  ›  Oliver Hanappi

如何缓冲stdout直到stdin关闭?

c
  •  1
  • Oliver Hanappi  · 技术社区  · 14 年前

    expand . 命令行工具首先从 stdin stdout . 我怎样才能优雅地做到这一点呢?

    目前我的代码看起来像这样。这在处理文件时非常有效,但显然当 input 在用户输入每一个换行符后,他立即得到输入行的结果。

    char buffer[1024];
    while (fgets(&buffer[0], sizeof(buffer) / sizeof(char), input) != NULL)
    {
        /* do something */
        printf("output");
    }
    

    谨致问候,

    2 回复  |  直到 14 年前
        1
  •  1
  •   R.. GitHub STOP HELPING ICE    14 年前

    将所有输出写入临时文件,而不是 stdout ,然后将此临时文件复制到 标准输出

        2
  •  0
  •   Jonathan Grynspan    14 年前

    好吧,你怎么会想 stdin

    你可以用 isatty(STDIN_FILENO) 以确定 标准物质 连接到用户输入。(如果是,则函数返回非零。)如果是这样,则可以相应地更改行为。