Hi!
Ich hätte mal ne recht allgemeine Frage zur C++-Programmierung, vielleicht kann mich da ja jemand mit ein paar Worten und ev. ein paar Links erleuchten.
Bei den "dvb-apps" der DVB-Treiber gibt es das Programm "test_vevent", das bei Änderung der Auflösung im Videostrom eine Meldung ausgibt. Das ganze würde ich gerne in mein Plugin "videosystem" übernehmen.
So, in diesem Test-Programm ist das über poll gelöst und die Schleife sieht prinzipiell so aus:
Im Code wird dann immer an dieser Codestelle gewartet bis sich was ändert. Jetzt könnte ich das ganze einfach in einen Thread einbauen, den ich beim Starten von VDR und dem Plugin aktiviere, doch wie beende ich dann so einen Thread wieder richtig. Im Normalfall wird der Thread ja immer durchlaufen und es gibt diese "do { } while (active);"-Abfrage. Das ist ja hier nicht der Fall weil der Code ja an der Stelle "hängt".
Das brachte mich auch dazu zu überlegen, wie das eigentlich in diesem test-Programm abläuft und hier ist ja kein Signal-Handling vorhanden. Heißt das dann, dass beim Drücken von <STRG> C auf der Konsole einfach der Code an der aktuellen Stelle unterbrochen wird?
Im VDR wird ja das ganze irgendwie gehandelt, damit beim Beenden die ganzen Konfigs usw. gespeicher werden können.
Doch irgendwie bringt mich das alles nicht so recht weiter. Muss ich dem Thread irgendwie ein SIGTERM schicken damit der alles stehen und liegen lässt und sich beendet? Was ist dann mit den geöffneten Handels?
Ihr seht, ich habe keine Ahnung von dem Zeug (musste mich noch nie damit beschäftigen) und wäre für jegliche Infos dankbar.
Gruß,
Brougs78