Ich möchte alle Informationen zum SIGTTIN
Signal wissen, zum Beispiel, ob das SIGTTIN
Signal 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 SIGTTIN
in 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 SIGTTIN
Signal 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_DFL
die Standardaktion,SIG_IGN
das 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).
SIGKILL
und SIGSTOP
sind 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
SIGKILL
und seinSIGSTOP
.
Undsignal(7)
:
Die Signale
SIGKILL
könnenSIGSTOP
nicht 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.