2010-11-18 3 views
2

Manchmal bekomme ich beim Debuggen eine Nachricht wie diese.Was ist SIG44 in gdb?

Program received signal SIG44, Real-time event 44. 

Was bedeutet das?

Vielen Dank.

EDIT:

Plattform ist Linux

+0

Welche Plattform? –

+1

SIG33 - SIG127 sind alle Echtzeitfehler. "Handle Fehlercode", würde nicht viel Informationen von gdb auf diesen Fehlern erhalten. – DumbCoder

Antwort

6

ein Signal mit einer Nachricht, die von dem Kernel auf ein Verfahren, um das Verfahren, das Ereignis von einer Art ist zu benachrichtigen, in dem System aufgetreten gesendet wird.

Übliche Signale auf Linux sind zum Beispiel SIGINT (Wert 2, Interrupt von der Tastatur) oder SIGKILL (Wert 9, kill ein Programm).

Signale werden entweder empfangen, wenn der Kernel ein Systemereignis erkennt (wie Division durch Null SIGFPE, Wert 8) oder wenn ein Prozess die Funktion kill() aufruft, um dem Kernel explizit mitzuteilen, ein Signal an einen Prozess (oder zu dem Prozess selbst, der die kill()) genannt.

Ein Signal kann oft vom Prozess abgefangen werden, um etwas zu tun.

Um Ihre Frage zu beantworten, ruft der Code höchstwahrscheinlich die Funktion kill() auf und sendet ein Signal mit dem Wert 44, wenn etwas passiert. Da Sie diese Nachricht erhalten, bedeutet dies, dass der Prozess das Signal empfangen hat und beenden oder tun wird, was im Code geschrieben wird, falls das Signal kommt.

Im Gegensatz zu Standard-Signalen in Echtzeit Signale haben keine vordefinierten Bedeutungen: der gesamte Satz von Echtzeitsignalen kann anwendungsdefinierten Zwecke verwendet werden. (Beachten Sie jedoch, dass die Linux Implementierung verwendet die ersten drei Echtzeitsignale.)

Quelle für das Zitat here