por que digitar Ctrl + c duas vezes para um processo em execução no Linux?

23

Existem programas Linux, por exemplo vlc, que recomendam digitar ctrl + c duas vezes para matar sua execução de um terminal se o programa não parar após o primeiro 1.

Por que digitar ctrl + c funcionará duas vezes quando a primeira vez não funcionou?

    
por 719016 21.08.2011 / 10:33

2 respostas

34

O que faz é totalmente específico da aplicação. Quando você pressiona ctrl + c , o emulador de terminal envia um SIGINT sinalize para o aplicativo de primeiro plano, que aciona o "manipulador de sinal" apropriado. O manipulador de sinal padrão para SIGINT finaliza o aplicativo. Mas qualquer programa pode instalar seu próprio manipulador de sinal para o SIGINT (incluindo um manipulador de sinal que não interrompe a execução).

Aparentemente, o vlc instala um manipulador de sinal que tenta fazer uma limpeza / terminação simples na primeira vez em que é invocado e retorna ao comportamento padrão de finalizar instantaneamente a execução quando é invocado pela segunda vez.

    
por 21.08.2011 / 11:27
15

SIGINT , o sinal enviado por Ctrl + C , convencionalmente diz ao programa para quebrar o loop de processamento do comando principal, ou, se isso não faz sentido, sair de forma limpa. Alguns programas executam um procedimento de limpeza quando recebem um SIGINT. Se o programa está tão bagunçado que o procedimento de limpeza falha, em alguns programas, um segundo Ctrl + C faz com que o programa seja encerrado imediatamente. Fazer isso depende do autor de cada programa.

Se um segundo Ctrl + C não matar o programa, tente Ctrl + \ , que envia SIGQUIT , um sinal mais violento (mas ainda tocável), ou tente Ctrl + Z para suspender o programa e depois o comando kill (por exemplo, kill %1 que envia SIGTERM , um sinal convencionalmente menos violento que o SIGQUIT, para o trabalho número 1). Se tudo mais falhar, mate o programa com kill -KILL , também conhecido como kill -9 , enviando o sinal não pesquisável SIGKILL .

    
por 21.08.2011 / 16:55

Tags