Wo finde ich die vollständigen Informationen zu einem Signal?

Wo finde ich die vollständigen Informationen zu einem Signal?

Ich möchte alle Informationen zum SIGTTINSignal wissen, zum Beispiel, ob das SIGTTINSignal verarbeitet werden kann oder nicht.

DasDokumentationsagt über das Signal lediglich folgendes aus SIGTTIN:

SIGTTIN 21,21,26 Stopp Terminaleingabe für Hintergrundprozess

Und die Eingabe man SIGTTINin das Terminal hat nichts zurückgegeben.


Bearbeiten:

Ich meinte nicht, welche Signale Sie an einen Prozess senden können, sondern ob der Prozess, der das Signal empfängt, die Standardaktion des Signals ändern kann. Beispiel: Die Standardaktion für das SIGTTINSignal ist, den Prozess zu stoppen. Sie können diese Standardaktion in Ihrem Programm mithilfe der sigaction()Funktion ändern. Bei manchen Signalen können Sie ihre Standardaktionen nicht ändern, und das ist es, wonach ich suche (eine Dokumentation der Signale, bei denen Sie ihre Standardaktionen nicht ändern können).

Antwort1

Sie können diesen Befehl verwenden, der normalerweise richtig ist.

kill -l | egrep SIGTTIN

Sie können auch ein kurzes PERL-Skript schreiben, um SIGTTIN abzufangen, es dann im Hintergrund ausführen und eine einfache Diagnosemeldung ausgeben, wenn Ihr SIGTTIN-Handler ausgeführt wird.

Antwort2

Ich glaube nicht, dass Sie die Standardaktion eines Signals ändern können, außer dass Sie das Signal vollständig ignorieren oder einen Signalhandler installieren.sigaction(2)sagt:

sa_handlerGibt die mit Signum zu verknüpfende Aktion an. Dies kann SIG_DFLdie Standardaktion, SIG_IGNdas Ignorieren dieses Signals oder ein Zeiger auf eine Signalverarbeitungsfunktion sein. Diese Funktion erhält die Signalnummer als einziges Argument.

Wenn Sie die Aktion eines Signals in eine der anderen Standardaktionen ändern möchten, können Sie ein anderes Signal auslösen, das das gewünschte Ergebnis liefert (einen Core Dump erstellt oder den Prozess stoppt) oder einfach „exit“ (den Prozess beendet).

SIGKILLund SIGSTOPsind die beiden Signale, die Sie weder abfangen noch blockieren können. sigaction(2):

Zeichengibt das Signal an und kann jedes gültige Signal außer SIGKILLund sein SIGSTOP.

Undsignal(7):

Die Signale SIGKILLkönnen SIGSTOPnicht abgefangen, blockiert oder ignoriert werden.

Das Ignorieren von Signalen, die auf echte Fehler zurückzuführen sind (ungültige Speicherzugriffe, ungültige Anweisungen), führt jedoch möglicherweise dazu, dass der Prozess nicht in einem sehr stabilen Zustand bleibt.

verwandte Informationen