¿Qué señales envía OS X para los comandos Salir y Forzar salida?

¿Qué señales envía OS X para los comandos Salir y Forzar salida?

¿Qué sucede detrás de escena cuando un usuario da un comando Quito Force Quitdesde fuera de la aplicación de destino (por ejemplo, desde Activity Monitor)?

Respuesta1

Como regla general, la operación “Salir” esnouna señal; es unEvento de manzana, que es el mismo tipo de comunicación entre procesos que se utiliza para las secuencias de comandos AppleScript y para abrir archivos o URL en aplicaciones que ya se están ejecutando, y proviene del linaje Mac OS en lugar de Unix.

Un proceso tiene que registrarse específicamente para recibir eventos de Apple, y dichos procesos son procesos GUI o al menos están asociados con una sesión de escritorio (que, fuera de Activity Monitor, es la única forma en que se les puede terminar diciendo que abandonen).

Sin embargo, si "sale" de un proceso del Monitor de actividad y ese proceso ya no existe.noregistrado para recibir Apple Events, enviará SIGTERM (15) en su lugar.

Respuesta2

Puede utilizar dtrace para ver qué señales se envían a los procesos:

sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d", execname, args[2], args[1]->pr_pid); }'

Si fuerza el cierre de una aplicación que se muestra en el Dock, la señal suele ser -15 (TERM). Pero si fuerza el cierre de un proceso en segundo plano desde Activity Monitor, generalmente es -9 (KILL).

Respuesta3

Puede ver eventos de Forzar salida para aplicaciones GUI enviadas a system.log. O utilice dtrace como se publicó en este hilo. Con dtrace obtienes más granularidad pero necesitas privilegios de root.

información relacionada