我使用下面的命令来获得两位数的值的恒定输出:缓冲而POPEN工作
pipe = popen("hcidump -a | egrep --line-buffered 'RSSI|bdaddr' | grep -A1 --line-buffered --no-group-separator 'bdaddr 78:A5:04:17:9F:66' | grep -Po --line-buffered 'RSSI:\\s+\\K.*'", "r");
我希望缓冲,这样我就可以将其转化为一个整数值,并与合作它。但我不确定如何实现这一点。只要我正在运行,我的C程序就不会继续。我用strace检查了它,他会读到popen中的值,而不是白蚁。
的代码的其余部分看起来像这样:
if (pipe)
{
printf("entered pipe-if");
while(!feof(pipe))
{
if(fgets(buffer, 128, pipe) != NULL){}
}
pclose(pipe);
printf("pclose");
buffer[strlen(buffer)-1] = '\0';
}
其背后的想法是,我要使用的数据在“实时”来计算distnace。一种可能性是我可以告诉popen在x秒后结束这个过程,然后使用缓冲的数据,然后从头开始这个过程。
感谢您的帮助和建议。
你为什么认为会有一个EOF? –
我知道没有EOF,我正在尝试一些东西,并保持。我的错误把它放在这里。 – DaPole