Hallo,
hat zwar nicht direkt mit VDR zu tun, aber da ich weiß das hier einige C-Profis sind, frage ich trotzdem mal nach.
Ich schreibe gerade an einem Programm, welches einen "Elternprozess" hat, welcher blockierend auf ein Ereignis wartet (udev). Immer wenn das Ereignis eintritt forkt der Elternprozess einen Kindprozess weg, welcher sich an das verfügbar gewordene Device hängt. Werden soll das letztlich ein Usermode-Treiber.
Das ganze funktioniert im Test schon einigermaßen. Problematisch ist aber das Beenden. Wenn ich den Elternprozess beende, dann laufen die Kindprozesse munter weiter. Sollen sie aber nicht.
Gibt es einen eleganten Weg um das zu lösen? Kann man irgendwie ein Signal erhalten wenn der Elternprozess beendet wird oder muss ich selber eine Liste der PIDs führen, die ich lostrete? Dazu kommt, dass die Kindprozesse sich ja auch beenden könnten und PIDs recycled werden. Wenn eine PID in meiner Liste also längst anders vergeben ist, dann wird ein unbeteiligter Prozess beendet...
Vermutlich ein Problem das irgendwo schon gelöst wurde, aber ich werde aktuell nicht fündig.
Prozesse sind ja auch als Prozessgruppen organisiert. Mein Hauptprozess wird mit "daemon()" in den Hintergrund geschoben. Wenn ich das richtig verstehe wird auch eine neue "Session" gestartet. Könnte man nicht die irgendwie komplett wegräumen wenn der Hauptprozess beendet wird?
Danke für jeden Tipp.