ich den folgenden Befehl bin mit einer konstanten Leistung von einem zweistelligen Wert zu erhalten:Buffering während 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");
Ich mag, dass puffern, so kann ich es in eine Integer-Wert-Transformation und die Arbeit mit es. aber ich bin mir nicht sicher, wie ich das erreichen soll. Solange ich Popen laufen habe geht mein C-Programm nicht weiter. Ich habe es mit strace überprüft und er wird den Wert in popen lesen und nicht terminieren.
der Rest der Code sieht wie folgt aus:
if (pipe)
{
printf("entered pipe-if");
while(!feof(pipe))
{
if(fgets(buffer, 128, pipe) != NULL){}
}
pclose(pipe);
printf("pclose");
buffer[strlen(buffer)-1] = '\0';
}
Die Idee dahinter ist, dass ich die Daten verwenden möchten eine distnace in „Echtzeit“ zu berechnen. Eine Möglichkeit wäre, dass ich Popen sagen könnte, dass er den Prozess nach x Sekunden beenden soll, dann benutze die gepufferten Daten und starte dann den Prozess von Anfang an.
Vielen Dank für Hilfe und Beratung.
Warum denkst du, dass es ein EOF geben wird? –
Ich weiß, dass es kein EOF gibt, ich habe einige Dinge ausprobiert und das ist geblieben. mein Fehler, es hier zu sagen. – DaPole