Ich habe eine App, in der der Elternprozess ein paar Threads (Plugins) startet. Und einer von ihnen startet in regelmäßigen Abständen einen Kindprozess und liest seine Ausgabe über eine Pipe unter Verwendung der popen
.Wie verhält sich ein Kind Piped-Prozess auf Signal an ein Elternteil?
Weiterhin kann der übergeordnete Prozess von SIGUSR1 gestoppt werden. Alle Plugins halten gut an, außer dem, der die Pipe benutzt: Sie wirft den SIGSEGV irgendwo in eine read
Funktion.
Ich denke, das ist, weil der Kindprozess auf SIGUSR1 auch stoppt, so dass die Pipe ungültig werden. Habe ich recht? Wie kann ich dieses Problem lösen?
Können Sie bestätigen, dass der Elternprozess von SIGSEGV durch einen Leseaufruf beendet wird? –
@ZangMingJie, ja, aber es wird nicht tatsächlich getötet, weil es einen Handler für Signale gibt. In irgendeiner Weise hat der Elternprozeß den SIGSEGV erhalten, während er das 'Lesen' in Bearbeitung aufgerufen hat. –