Kann ich einen einzigen Signal-Handler für alle Signale in Perl setzen?

7

Ist es in Perl möglich, nur einen Signal-Handler für alle empfangenen Signale zu installieren? Der Grund dafür ist, dass ich nicht weiß, welches Signal mein Perl-Code zur Laufzeit bekommt. Eine Möglichkeit, die ich sehen kann, ist, dass alle verfügbaren Signale auf meinen benutzerdefinierten Signal-Handler zeigen, aber ich möchte diesen Weg nicht gehen. Gibt es einen einfachen Weg, dies zu tun? etwas wie:

%Vor%     
Anil Vishnoi 01.10.2010, 16:14
quelle

3 Antworten

12

Sie wirklich wollen das nicht tun. Installieren Sie nur Signal-Handler für die Signale, die Sie anders handhaben müssen als die Standardeinstellungen (denen wir nicht helfen können, da Sie nicht erwähnen, welche Art von Anwendung Sie schreiben).

In den meisten normalen Fällen müssen Sie keine Signalhandler schreiben - die Standardeinstellungen sind so eingestellt, dass sie genau das tun, was Sie brauchen. Sie sollten perldoc perlipc jetzt lesen, damit Sie wissen, von welchen Fällen Sie sich unterscheiden Normalität.

Mit dem Sigtrap-Pragma können Sie mehr als ein Signal gleichzeitig ändern: Es ist nützlich, Handler für nicht eingefangene Signale oder um die normale Fehlerbehandlung strenger zu machen.

%Vor%     
Ether 01.10.2010, 16:19
quelle
5
%Vor%

Wenn Sie __WARN__ und __DIE__ anders behandeln möchten,

%Vor%     
mob 01.10.2010 16:17
quelle
3

Von meinem Kopf,

%Vor%

Das ist aber wahrscheinlich eine schlechte Idee. Sie sollten nur Signale abfangen, von denen Sie wissen, dass Sie damit umgehen können. Unterschiedliche Signale sollten nicht alle gleich behandelt werden. Wollen Sie wirklich, dass SIGINT genauso behandelt wird wie SIGCHILD? SEUFZEND? SIGUSR1?

    
Daenyth 01.10.2010 16:16
quelle

Tags und Links