Existem programas Linux, por exemplo, vlc, que recomendam digitar ctrl+ cduas vezes para interromper a execução de um terminal se o programa não parar após o primeiro.
Por que digitar ctrl+ cduas vezes funciona quando a primeira vez não funciona?
Existem programas Linux, por exemplo, vlc, que recomendam digitar ctrl+ cduas vezes para interromper a execução de um terminal se o programa não parar após o primeiro.
Por que digitar ctrl+ cduas vezes funciona quando a primeira vez não funciona?
Respostas:
O que ele faz é inteiramente específico da aplicação. Quando você pressiona ctrl+ c, o emulador de terminal envia um sinal SIGINT para o aplicativo em 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 alguma limpeza / finalização normal na primeira vez que é invocado e volta ao comportamento padrão de finalizar instantaneamente a execução quando é invocado pela segunda vez.
SIGINT , o sinal enviado por Ctrl+ C, ordena a um programa que interrompa seu loop de processamento de comandos principal ou, se isso não faz sentido, saia corretamente. Alguns programas executam um procedimento de limpeza quando recebem um SIGINT. Se o programa estiver tão bagunçado que o procedimento de limpeza falhar, em alguns programas, um segundo Ctrl+ Cfaz com que o programa seja encerrado imediatamente. Isso é responsabilidade de cada autor do programa.
Se um segundo Ctrl+ Cnão matar o programa, tente Ctrl+ \, que envia SIGQUIT , um (sinal, mas ainda catchable) mais violento, ou tente Ctrl+ Zpara suspender o programa e, em seguida, o kill
comando (por exemplo, kill %1
que envia SIGTERM , um sinal convencionalmente menos violento que SIGQUIT, para o trabalho número 1). Se tudo mais falhar, interrompa o programa kill -KILL
, também conhecido como kill -9
, enviando o sinal inatacável SIGKILL .