Frage

habe ich ein System mit 10 + Threads. Ich habe einen Signal-Handler SIGSEGV zu fangen. wenn ein Thread SIGSEGV erzeugt, geht das Signal geht an alle Fäden, oder nur der Thread, der das Signal erzeugt?

War es hilfreich?

Lösung

SIGSEGV ist ein synchrones Signal. Es wird auf das Gewinde geliefert werden, die den ungültigen Speicherzugriff verursacht. Von signal(7) :

ein Signal erzeugt werden kann (und damit pending) für einen Prozess als Ganzes (z.B. bei Verwendung von kill(2)) oder für einen bestimmten Thread (z.B. bestimmte Signale, wie geschickt als SIGSEGV und SIGFPE, eine spezifische als Folge der Ausführung erzeugten Maschinensprachbefehl ist Thread gerichtet ist, als Signale an einem zielgerichteten sind bestimmter Thread unter Verwendung pthread_kill(3)). Verfahren gerichtete Signal kann zu einem der Fäden geliefert, die derzeit nicht das Signal hat verstopft. Wenn mehr als eine der Fäden hat das Signal unblockierten, dann ist die kernel wählt einen beliebigen Thread zu dem das Signal zu liefern.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top