![](/img/trans.png)
[英]Using read() and write() in place of scanf() and printf() in C
[英]C - Pipe using printf and scanf.. pausing
我是C语言的新手,我想弄清楚如何将一个程序的输出发送到另一个程序进行处理。
例如。 ./foo | ./boo
foo-每100毫秒从外部源读取一次数据,并将其写入stdout。
boo-从stdin读取数据,进行一些简单的计算并将其写入stdout,
(我没有访问foo的权限,但是它每隔100ms在新行中写入一个浮点值。)
我可以使用它,但是每两百次输入之后…就会有2秒钟的暂停时间…
因此它吐出了大约200行,2秒暂停,200行,2秒暂停。 等等..
我需要注意一个缓冲区吗?
这是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有一个100ms延迟的循环。 当将其发送到boo中时,就以某种方式组合在一起。 删除此循环可解决问题
编辑我发现了问题,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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.