Warum gibt es nur zwei benutzerdefinierte Signale?

11

In der Liste der in einem Linux-System definierten Signale sind zwei Signale als benutzerdefinierte Signale ( SIGUSR1und SIGUSR2) angegeben. Andere Signale werden in bestimmten Situationen ausgelöst oder abgefangen, aber SIGUSRs bleiben für die Verwendung durch die Benutzeranwendung übrig.

Warum also nur zwei Signale?

saeedn
quelle

Antworten:

13

Historisch gesehen hatte Unix nur diese beiden Signale, aber die modernen Systeme haben die Echtzeitsignale SIGRTMIN... SIGRTMAX.

Aufgrund der verrückten und nicht portierbaren Semantik der Signal-APIs gibt es fast keinen Anwendungsfall, in dem Signale anderen Kommunikationsmechanismen wie Pipes vorzuziehen wären. Daher wurde die Zuweisung einer neuen Signalnummer nie als notwendig angesehen.

CL.
quelle
Vielen Dank. In meinem Fall behandle ich SIGUSR1 zur Neukonfiguration. Wenn der Administrator die Konfiguration meines laufenden Prozesses ändern möchte, ändert er die Konfigurationsdatei und sendet einen SIGUSR1 an meine PID (einfacher, hier eine Pipe zu verwenden). Und ich benutze SIGUSR2 zum sauberen Herunterfahren von Prozessen. Ich musste kein anderes Signal als diese beiden verwenden, aber einige Laufzeitfunktionen konnten durch die Verarbeitung anderer benutzerdefinierter Signale implementiert werden!
Saeedn
2
@saeedn Warum verwenden Sie SIGTERM nicht zum Herunterfahren sauberer Prozesse? Dafür ist es da. Viele andere Server verwenden SIGHUP (was für einen interaktiven Prozess nur ansonsten von Bedeutung ist) als Signal zum erneuten Laden von Konfigurationsdateien.
Random832
@ Random832 Du hast recht, ich weiß was du sagst. Aber das Problem, über das ich nachdachte, war, dass mir die 31 Signaloptionen ausgehen würden.
Saeedn
1
Wo kann ich weitere Informationen zu den SIGRTMIN ... SIGRTMAX-Signalen erhalten? Wo werden sie definiert, wenn sie verwendet werden?
Strubbl
6

Signale bieten nur ein primitives Kommunikationsmittel. Insbesondere gibt es keine Möglichkeit, Informationen an sie anzuhängen. Der Empfänger kennt nur die Signalnummer, nicht die Identität des Absenders. Mehrere Signale können zu einem zusammengeführt werden. Angesichts all dieser Einschränkungen gibt es nicht so viele nützliche Zwecke für Signale.

Verwenden Sie für komplexere Zwecke komplexere Interaktionsmittel wie Rohre oder Muffen.

Gilles 'SO - hör auf böse zu sein'
quelle