Estoy escribiendo algunos scripts de Perl y quiero utilizar señales para realizar ciertas rutinas en cualquier momento. Veo por todas partes la capacidad de imprimir cuáles son las señales,
perl -e 'foreach (keys %SIG) { print "$_\n" }'y ya he estado usando "INT" para ir a una subrutina que se activa con ctrl+c.
No puedo encontrar en ninguna parte qué combinaciones de teclas están asociadas con las otras señales. ¿Hay una lista en algún lugar? El script que estoy escribiendo debería funcionar en computadoras Mac y Linux.
Sé que la señal ctrl+c es análoga entre sistemas, ¿qué otras "señales" se pueden utilizar en perl y qué teclas las activan?
qué otras "señales" se pueden utilizar en perl
Estos son los nombres de las señales reconocidos por Perl:
$ perl -V:sig_name
sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM4 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED ';
La lista anterior también se puede obtener de $Config{sig_name} de Config.pm.
También están las dos pseudoseñales, __WARN__ y __DIE__ .
y que teclas las activan?
Las siguientes señales a menudo se envían en respuesta a la entrada del terminal:
Puede ver a qué clave están vinculados usando lo siguiente:
$ stty -a | perl -ne' $b{$1}=$2 while /\b(intr|quit|susp|stop|start)\s*=\s*([^\s;]+)/g; END { print "SIGINT: $b{intr}\n"; print "SIGQUIT: $b{quit}\n"; print "SIGTSTP: $b{susp}\n"; print "SIGSTOP: $b{stop}\n"; print "SIGCONT: $b{start}\n"; } ' SIGINT: ^C SIGQUIT: ^\ SIGTSTP: ^Z SIGSTOP: ^S SIGCONT: ^QLa mayoría de las señales no se envían como resultado de la entrada del terminal. Las siguientes señales de uso común y lo que normalmente hace que se envíen:
alarm .