Esperar: Modificar el comportamiento Ctrl-C

0

Mientras exec ejecuta un programa, me gustaría que Ctrl-C finalice el programa y reanude el script, en lugar de eliminar el script. ¿Cuál es la mejor manera de lograr eso?

Laca
fuente
Para detener un programa, envíe SIGSTOP, generalmente asignado a Ctl-Z. Si se ejecuta debajo de esperar, debería poder usar el comando kill con SIGSTOP, pero no recuerdo los detalles.
Keith

Respuestas:

0

Vea si esto funciona: package require Tclx

Si puede, puede atrapar señales con el signalcomando.

Glenn Jackman
fuente
Se supone que esperar tiene su propia facilidad para capturar señales. El problema es que, suponiendo que se envíe el SIGINT inicial expecty que mi script lo capture, necesitaría enviar un SIGINT al programa que se está executilizando, pero no sé cómo obtener su PID. execsolo devuelve un PID si realiza un proceso en segundo plano, por razones obvias.
LaC
@LaC, ¿por qué no lo haces spawnen lugar de exechacerlo?
Glenn Jackman
Solía execporque solo quiero ejecutar el programa hasta que se complete. Intenté usar spawnseguido de wait, pero eso lo hace completamente impermeable a SIGINT. Terminé teniendo que suspender y matar -9. Intenté instalar un controlador de señal para SIGINT pero no se llama.
LaC
0

Terminé ejecutando el programa usando execy usando el trapcomando de wait para interceptar SIGINT. El subprograma todavía está terminado (de hecho, puede que no haya una forma de evitar que esto se esté usando exec), pero al usar trapy catchalrededor exec, el script tcl puede continuar ejecutándose.

Laca
fuente