我是C的新手,我正试图弄清楚如何将一个程序的输出发送到另一个程序进行处理。…或管道。
例如/foo|/boo
foo-每100毫秒从外部源读取一次数据,并将其写入stdout。
boo-从stdin读取数据,进行一些简单的计算并将其写入stdout,
(我无法访问foo,但它每100毫秒在一行新行上写入一个浮点值。)
我有它的工作,然而,在每几百个条目后…有2秒的停顿。。。
所以它吐出大约200行,2秒的停顿,200行,两秒的停顿。等等。
有没有我需要注意的缓冲区?
这是boo的代码;
#include <stdio.h>
float input;
float value;
while (1)
{
input = scanf("%f", &value);
{do stuff here}
printf("result %f n ", input);
fflush(stdout);
}
return 0;
}
编辑我发现了问题,foo有一个100毫秒延迟的循环。当把这个输入boo时,不知怎么的,它被组合在一起了。删除此循环修复了问题
EDIT我发现了这个问题,foo有一个100ms延迟的循环。当把这个输入boo时,不知怎么的,它被组合在一起了。删除此循环修复了问题
我删除了这个循环,它解决了问题;
int millis()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return (tv.tv_sec) * 1000 + (tv.tv_usec)/1000;
}
start = millis()
while(millis() - start < 20)
{
usleep(1000);
}