Hallo,
ich bräuchte mal wieder Nachhilfe in C++
Es geht um die CommandReader Klasse. Ich hatte die als Schnittstelle gedacht, um Ausgaben eines beliebigen Hilfsprogrammes verarbeiten zu können.
Wenn das Hilfsprogramm viel Output produziert, sieht es erstmal nicht schlecht aus.
Erst so nach und nach bin ich drauf gekommen, dass es wohl mit dem Ende der Ausgabe zu tun hat.
Dann bekomme ich beim Debuggen mit code::blocks SigSegV-Abstürze.
In dieser Testdatei kann das Problem mit einem Brechpunkt in Zeile 87 nachgestellt werden.
Dazu am besten im Verzeichnis, in dem die Debug-Sitzung abgehalten wird, eine Datei "testMedia.files" erstellen, mit dem Pfad einer JPeg-Datei in der ersten Zeile.
Dann kann man (mit dem Brechpunkt in Zeile 87) den Debugger starten.
Wenn der Debugger anhält, "Continue" ausführen, sodass er ein zweites Mal an dem Brechpunkt anhält.
Wenn man jetzt reinsteppt, gibt es gleich vor der ersten Codezeile der Funktion den Absturz.
valgrind bekommt von dem Absturz leider nix mit, was mich vermuten lässt, dass es mit der Inter-Prozess-Kommunikation zu tun hat.
Ich hatte auch schon trace-children probiert, leider ohne Erfolg, bzw. ohne hilfreiche Ausgabe.
Meine Vermutung geht in die Richtung, dass wenn das Hilfsprogramm, welches über exec gestartet wurde, sich beendet, die Daten in der Pipe nicht mehr gelesen werden können.
Da gibt es doch bestimmt Trix, wie man(n) das Problem umschiffen kann.
Bin für jeden Tip dankbar.
Gruß Gero