Prevenir " salir inesperadamente" mensaje en sigquit

Elimino los procesos de Python con SIGQUIT presionando Ctrl\a veces (generalmente los míos que se están portando mal). ¿Puedo evitar el mensaje "Python se cerró inesperadamente"? Sé que puedo presionar escape, así que no es tan malo.

"Python abandonó inesperadamente".  diálogo

¿Por qué no usas control-C en su lugar? SIGTERM no causa el mensaje.
@ughoavgfhw Estoy trabajando en un REPL que a veces pone la terminal en modo sin procesar, por lo que mi programa recibe ctrl-c como una pulsación de tecla. También a veces tengo problemas de subprocesos, de modo que los subprocesos que deberían haber muerto no lo hacen, y en Python ctrl-c parece solo matar el subproceso principal. (Sé que debería usar t.daemon = Trueen estos, y lo hago en su mayor parte) Por varias razones, a veces necesito usar ctrl-\.
Si es su código, entonces un problema de desarrollo, su código tiene que lidiar con las señales.
@Mark estuvo de acuerdo: esto fue un problema mientras aún no tenía ese comportamiento funcionando en ciertos casos extremos.

Respuestas (3)

Si no desea volver a ver los cuadros de diálogo del informe de fallas, hay una preferencia para deshabilitarlos:

defaults write com.apple.CrashReporter DialogType none

Cierra la sesión y vuelve a iniciarla para aplicar los cambios.

Cerrar sesión no fue necesario en mi caso.
¿Hay alguna forma de hacerlo de forma defaults write com.apple.CrashReporter DialogType noneselectiva solo para una aplicación en particular?
Para mí, este comportamiento no cambió (después de ingresar el comando) hasta que cierre la sesión e inicie sesión.

También puedes hacer que el mensaje aparezca como una notificación:

defaults write com.apple.CrashReporter UseUNC 1
Como éste. En macOS Sierra, un banner de notificación se desliza en la parte superior derecha de la pantalla y desaparecerá por sí solo, pero si hace clic en él, obtendrá la ventana original de volcado completo. Así que esto es perfecto. Mucho menos molesto pero deja opciones abiertas.

El comportamiento predeterminado al recibir SIGQUIT es volcar el núcleo y salir; el reportero de accidentes se activa como parte de este proceso.

Comenzando con 10.5 (?), simplemente configurar un controlador de señal para SIGQUIT debería ser suficiente para evitar el reportero de fallas; probablemente querrá que el controlador también llame a exit.

import signal, sys, os

def sigquit_handler(signum, frame):
    print 'SIGQUIT received; exiting'
    sys.exit(os.EX_SOFTWARE)

signal.signal(signal.SIGQUIT, sigquit_handler)

# Do your normal work instead of this
print 'Waiting for a signal...'
signal.pause()

El código anterior se probó en 10.8.5 contra /usr/bin/pythonel cual es 2.7.2.

¿Hay alguna forma de hacerlo de forma defaults write com.apple.CrashReporter DialogType noneselectiva solo para una aplicación en particular?