【发布时间】:2016-07-04 10:10:01
【问题描述】:
我正在使用以下命令来获得两位数值的恒定输出:
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中的值,不会termit。
其余代码如下所示:
if (pipe)
{
printf("entered pipe-if");
while(!feof(pipe))
{
if(fgets(buffer, 128, pipe) != NULL){}
}
pclose(pipe);
printf("pclose");
buffer[strlen(buffer)-1] = '\0';
}
它背后的想法是我想使用数据“实时”计算距离。一种可能性是我可以告诉 popen 在 x 秒后结束进程,然后使用缓冲的数据,然后从头开始进程。
感谢您的帮助和建议。
【问题讨论】:
-
你认为为什么会有 EOF?
-
我知道没有 EOF,我正在尝试一些东西,但仍然存在。把它放在这里是我的错误。