Evitar que 'bash' de MSYS elimine los procesos que atrapan ^ C

Tengo una aplicación de Windows en modo consola (portada desde Unix) que fue diseñada originalmente para hacer una salida limpia cuando recibió ^ C (UnixSIGINT). Una salida limpia en este caso implica esperar, potencialmente bastante tiempo, a que se cierren las conexiones de red remotas. (Sé que este no es el comportamiento normal de ^ C pero no estoy en condiciones de cambiarlo.) El programa tiene un solo subproceso.

Puedo atrapar a ^ C con cualquierasignal(SIGINT) (como en Unix) o conSetConsoleCtrlHandler. Funciona correctamente cuando el programa se ejecuta en CMD.EXE. Sin embargo, si uso el shell "bash" que viene con MSYS (estoy usando el entorno MinGW para compilar el programa, ya que esto me permite reutilizar los archivos Make de Unix), entonces el programa se termina por la fuerza de forma aleatoria, poco tiempo (menos de 100 milisegundos) después de la ^ C. Esto es inaceptable, ya que, como mencioné, el programa necesita esperar a que se cierren las conexiones de red remotas.

Es muy probable que la gente quiera ejecutar este programa bajo MSYS bash. Además, este efecto rompe el conjunto de pruebas. No he podido encontrar ninguna forma de solucionar el problema desde el programa (ideal) o mediante la configuración en el shell (aceptable). ¿Alguien puede recomendar algo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta