Ich entwickle eine Anwendung und möchte, dass sie bei Bedarf einige Laufzeitstatistiken auf die Konsole druckt. kill
und Signale kamen mir sofort in den Sinn.
Das Lesen von Unix-Signalen im Wiki SIGINFO
scheint der richtige Weg zu sein, weil:
- Es ist beabsichtigt , für diese Zwecke
- Beendet den Prozess nicht, wenn der Signalhandler nicht implementiert ist (im Gegensatz zu
SIGUSRx
- siehe hier )
Bei der Überprüfung der Ausgabe von kill -l
scheint es jedoch, dass auf meinem Server dieses Signal nicht implementiert ist.
Meine Fragen sind:
- Warum
SIGINFO
fehlt auf meinem System? Fehlt es auf allen GNU Linux-Systemen? - Gibt es eine einfache Möglichkeit (dh keine Kernel / Glibc-Neukompilierung), um dieses Signal zu aktivieren? Wenn keine, was wäre der harte Weg?
- Welches alternative Signal könnte ich für meine Zwecke verwenden, das keine Nebenwirkungen verursachen würde, wenn es nicht vom Zielprozess behandelt würde? (Ich gehe bereits von keinem aus, da ich im Handbuch des glibc kein anderes geeignetes Signal finden konnte. )
Linux metainfo:
Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux
Update: Ich suche noch nach weiteren Informationen darüber, warum dieses Signal von anderen Systemen als BSD bedingt ausgeschlossen wird (siehe Kommentare unten). Das Signal scheint für viele Zwecke sehr nützlich zu sein, daher fällt es mir schwer zu glauben, dass es nur eine Frage der Laune ist. Was ist also der wahre Showstopper für die Verfügbarkeit dieses Signals unter Linux?
dd
mit dem auf meinem Mac verwechselt haben . ^T
Während der dd
Ausführung tut nichts auf dem Linux-Rechner - ich werde die Frage entsprechend aktualisieren.
^T
in der Ausgabe vonstty -a
?