Hi zusammen
ich versuche gerade `fatrace` in meinem python script einzubinden um
kontinuierlich gewisse Zugriffe zu überwachen.
Hier macht mir aber die Implementierung von fatrace ein Problem, denn es
wird anscheinend nicht wie vergleichweise bei `ping` Zeile für Zeile an
stdout übergeben.
Als Beispiel:
gibt alles ordentlich auf der Konsole aus, aber
1 | fatrace --filter=OC | cat
|
bleibt leer...
Doch genau das selbe Problem entsteht leider auch wenn ich es in python
versuche nach dem folgenden Schema:
1 | proc = subprocess.Popen(["fatrace", "--filter=OC"], stdout=subprocess.PIPE)
|
2 | fcntl.fcntl(proc.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
|
3 | while proc.poll() is None:
|
4 | print("Received: ", proc.stdout.read())
|
5 | time.sleep(1)
|
Hierbei erhalte ich nur leere "Received: " auf der Konsole. Versuche ich
es hingegen mit einem `ping`, erscheint Zeile für Zeile hinter
"Received: ...".
Aktueller work-around ist alle 15s ein neues fatrace zu starten, damit
ich stdout nach der verstrichenen Zeit anständig auslesen kann, aber
immer einen neuen Prozess zu starten scheint mir auch nicht DIE Lösung
zu sein...
Hat jemand eine Idee dafür? Oder weiss jemand wieso der output von einem
"nackten" `fatrace` dennoch anständig auf der Konsole ausgegeben wird
trotz dass stdout lange Zeit leer bleibt?
lg Sven