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

7

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

    
por Blacklight Shining 27.09.2012 / 13:34

3 respostas

7

Como regra geral, a operação “Sair” não é um sinal; é um Evento 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 precisa registrar-se especificamente para receber o Apple Events, e esses processos são processos da GUI ou pelo menos associados a uma sessão da área de trabalho (que, fora do Activity Monitor, é a única maneira de encerrar todos).

No entanto, se você "encerrar" um processo do Activity Monitor e esse processo não tiver registrado para receber o Apple Events, ele enviará SIGTERM (15).

    
por 30.09.2012 / 02:00
6

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 normalmente será -15 (TERM). Mas se você forçar a saída de um processo em segundo plano do Activity Monitor, normalmente é -9 (KILL).

    
por 28.09.2012 / 20:55
1

Você pode ver os eventos Force Quit para aplicativos GUI enviados para system.log . Ou use o dtrace como postado neste tópico. Com o dtrace, você obtém mais granularidade, mas precisa de privilégios de root.

    
por 20.03.2013 / 15:29

Tags