繁体   English   中英

C-使用printf和scanf ..暂停管道

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM