【发布时间】:2016-11-04 18:02:05
【问题描述】:
我制作了两个程序,其中一个名为生成器,每秒打印一些文本
int main(int argc, char** argv) {
for(int i = 0; i < 10 ; i++) {
printf("something\n");
sleep(1);
}
return (EXIT_SUCCESS);
}
然后有一个第二个程序现在称之为消费者,它应该从标准输入中读取,添加一些其他文本并重新打印它。 让它看起来像这样:
int main(int argc, char** argv) {
char line[BUFSIZ];
while(scanf("%s",line) != -1){
printf("you entered %s \n",line);
}
return (EXIT_SUCCESS);
}
当我编译它们并尝试只运行像 ./generator 这样的生成器时,它会按我的预期工作。每一秒都会有一些东西打印到控制台。 但是当我尝试像 ./generator | 一样运行它们时。/消费者 它没有像我预期的那样工作。我等了 10 秒,然后得到 10 行 you enter something 我想每秒打印一次“你输入了一些东西”。
您能解释一下为什么会这样,或者更好地告诉我如何实现预期的行为吗?
【问题讨论】: