小编Dom*_*ýll的帖子

c stdout到stdin实时

我制作了两个程序,其中一个名为generator,每秒打印一些文本

int main(int argc, char** argv) {

    for(int i = 0; i < 10 ; i++) {
         printf("something\n");
         sleep(1);
    }

  return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

然后有一个第二个程序现在称它为消费者,它应该从一个标准输入中读取一些其他文本并重新打印它.让它看起来像这样:

 int main(int argc, char** argv) {


   char line[BUFSIZ];

   while(scanf("%s",line) != -1){
       printf("you entered %s \n",line);
   }

    return (EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

当我编译它们并尝试只运行像./generator这样的生成器时,它按预期工作.每一秒都有东西打印到控制台.但是当我尝试像./generator一样运行它们时 ./consumer它没有像我预期的那样工作.我等了10秒,然后得到了10行 想要打印的东西"你输入的东西"每一秒.

你能解释一下为什么会这样,甚至更好地告诉我如何实现预期的行为?

c linux io pipe

5
推荐指数
1
解决办法
321
查看次数

标签 统计

c ×1

io ×1

linux ×1

pipe ×1