Istnieją programy Linux, na przykład vlc, które zalecają dwukrotne naciśnięcie ctrl+, caby zabić ich wykonanie z terminala, jeśli program nie zatrzymał się po pierwszym.
Dlaczego pisanie ctrl+ cdwa razy działa, gdy pierwszy raz nie działa?
Istnieją programy Linux, na przykład vlc, które zalecają dwukrotne naciśnięcie ctrl+, caby zabić ich wykonanie z terminala, jeśli program nie zatrzymał się po pierwszym.
Dlaczego pisanie ctrl+ cdwa razy działa, gdy pierwszy raz nie działa?
Odpowiedzi:
To, co robi, jest całkowicie zależne od aplikacji. Po naciśnięciu przycisku ctrl+ cemulator terminala wysyła sygnał SIGINT do aplikacji pierwszego planu, co wyzwala odpowiedni „moduł obsługi sygnału”. Domyślna procedura obsługi sygnału dla SIGINT zamyka aplikację. Ale każdy program może zainstalować własną procedurę obsługi sygnału dla SIGINT (w tym procedurę obsługi sygnału, która wcale nie zatrzymuje wykonywania).
Najwyraźniej vlc instaluje moduł obsługi sygnału, który próbuje wykonać pewne czyszczenie / zakończenie z gracją przy pierwszym wywołaniu, i wraca do domyślnego zachowania natychmiastowego kończenia wykonania, gdy jest wywoływany po raz drugi.
SIGINT , sygnał wysyłany przez Ctrl+ C, konwencjonalnie nakazuje programowi włamać się do głównej pętli przetwarzania poleceń lub, jeśli to nie ma sensu, aby wyjść czysto. Niektóre programy uruchamiają procedurę czyszczenia po otrzymaniu SIGINT. Jeśli program jest tak pomieszany, że procedura czyszczenia kończy się niepowodzeniem, w niektórych programach sekunda Ctrl+ Cpowoduje natychmiastowe zamknięcie programu. Od tego zależy każdy autor programu.
Jeśli drugi Ctrl+ Cnie zabije program, spróbuj Ctrl+ \, który wysyła SIGQUIT , bardziej brutalne (ale wciąż połów sygnał) lub spróbuj Ctrl+ Zdo zawieszenia programu, a następnie kill
polecenie (np kill %1
który wysyła SIGTERM , konwencjonalnie mniej gwałtowny sygnał niż SIGQUIT, do zadania nr 1). Jeśli wszystko inne zawiedzie, zabij program kill -KILL
, zwany także kill -9
wysyłaniem niekontrolowanego sygnału SIGKILL .