我制作了两个简单的程序:
out.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int x;
srand((unsigned int)time(NULL));
for(;;)
{
x = rand();
printf("%d\n", x % 100);
sleep(1);
}
return 0;
}
in.c
#include <stdio.h>
int main()
{
int x;
for(;;)
{
scanf("%d",&x);
printf("%d\n", x);
}
return 0;
}
我像./out | ./in
一样运行它,但我没有得到任何打印。以管道输入
答案 0 :(得分:1)
可以通过在out.c程序中刷新stdout来解决此问题。你需要这样做,因为如果stdout不是tty,它不会自动刷新,具体取决于你的操作系统。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int x;
srand((unsigned int)time(NULL));
for(;;)
{
x = rand();
printf("%d\n", x % 100);
fflush(stdout); // <-- this line
sleep(1);
}
return 0;
}