Que sinais o OS X envia para os comandos Quit e Force Quit?

Que sinais o OS X envia para os comandos Quit e Force Quit?

O que acontece nos bastidores quando um usuário dá um comando Quitou Force Quitde fora do aplicativo de destino (por exemplo, do Activity Monitor)?

Responder1

Como regra geral, a operação “Sair” énãoum sinal; é umEvento da Apple, que é o mesmo tipo de comunicação entre processos usado para scripts AppleScript e para abrir arquivos ou URLs em aplicativos já em execução e vem da linhagem Mac OS em vez de Unix.

Um processo deve ser registrado especificamente para receber eventos da Apple, e esses processos são processos GUI ou pelo menos associados a uma sessão de desktop (que, fora do Activity Monitor, é a única maneira pela qual eles podem acabar sendo instruídos a encerrar).

No entanto, se você “sair” de um processo do Activity Monitor e esse processo tivernãoregistrado para receber eventos da Apple, ele enviará SIGTERM (15).

Responder2

Você pode usar o dtrace para ver quais sinais são enviados aos processos:

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

Se você forçar o encerramento de um aplicativo mostrado no Dock, o sinal geralmente é -15 (TERM). Mas se você forçar o encerramento de um processo em segundo plano do Activity Monitor, geralmente será -9 (KILL).

Responder3

Você pode visualizar eventos Forçar Encerramento para aplicativos GUI enviados para system.log. Ou use dtrace conforme postado neste tópico. Com o dtrace você obtém mais granularidade, mas precisa de privilégios de root.

informação relacionada