Ответы:
То, что он делает, полностью зависит от приложения. Когда вы нажимаете ctrl+ c, эмулятор терминала отправляет сигнал SIGINT приложению переднего плана, которое запускает соответствующий «обработчик сигнала». Обработчик сигналов по умолчанию для SIGINT завершает приложение. Но любая программа может установить свой собственный обработчик сигналов для SIGINT (включая обработчик сигналов, который вообще не останавливает выполнение).
Очевидно, vlc устанавливает обработчик сигнала, который пытается выполнить некоторое очищение / постепенное завершение при первом вызове, и возвращается к стандартному поведению немедленного прекращения выполнения, когда он вызывается во второй раз.
Сигнал SIGINT , отправляемый Ctrl+ C, обычно указывает программе выйти из основного цикла обработки команд или, если это не имеет смысла, завершиться корректно. Некоторые программы запускают процедуру очистки, когда получают SIGINT. Если программа настолько испорчена, что процедура очистки завершается неудачно, в некоторых программах второй Ctrl+ Cвызывает немедленное завершение программы. Делать это зависит от каждого автора программы.
Если второй Ctrl+ Cне убивает программу, попробуйте Ctrl+ \, который отправляет SIGQUIT , более сильный (но все еще поддающийся обнаружению сигнал), или попробуйте Ctrl+, Zчтобы приостановить программу, а затем kill
команду (например, kill %1
которая отправляет SIGTERM , условно менее сильный сигнал). чем SIGQUIT, на работу № 1). Если ничего не помогает , убейте программу kill -KILL
, также известную как kill -9
отправка неуловимого сигнала SIGKILL .