我必须让两个方案其中一个名为发生器,它打印一些文字每秒Ç标准输出到标准输入实时
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行你输入了一些东西 我想打印“你每秒输入一些东西”。
你能解释一下为什么这样,或者甚至更好地告诉我如何达到预期的行为?
或者你也可以使用stdbuf -o0 ./generator关闭缓冲命令行| 。/ consumer –
@RomanHocke等待有一个程序改变另一个进程预执行程序的用户模式行为?那么这很有趣... –