Ada beberapa program Linux, misalnya vlc, yang merekomendasikan pengetikan ctrl+ cdua kali untuk menghentikan eksekusi dari terminal jika program tidak berhenti setelah yang pertama.
Mengapa mengetik ctrl+ cdua kali berfungsi saat pertama kali tidak bekerja?
Jawaban:
Apa yang dilakukannya sepenuhnya aplikasi khusus. Ketika Anda menekan ctrl+ c, emulator terminal mengirimkan sinyal SIGINT ke aplikasi latar depan, yang memicu "penangan sinyal" yang sesuai. Penangan sinyal default untuk SIGINT mengakhiri aplikasi. Tetapi program apa pun dapat menginstal pengendali sinyal sendiri untuk SIGINT (termasuk pengendali sinyal yang tidak menghentikan eksekusi sama sekali).
Rupanya, vlc menginstal penangan sinyal yang mencoba melakukan pembersihan / penghentian anggun pada saat pertama kali dipanggil, dan jatuh kembali ke perilaku default penghentian eksekusi secara instan ketika dipanggil untuk kedua kalinya.
sumber
SIGINT , sinyal yang dikirim oleh Ctrl+ C, secara konvensional memberitahu program untuk keluar ke loop pemrosesan perintah utamanya, atau jika itu tidak masuk akal, untuk keluar dengan bersih. Beberapa program menjalankan prosedur pembersihan ketika mereka menerima SIGINT. Jika program sangat kacau sehingga prosedur pembersihan gagal, dalam beberapa program, Ctrl+ detik Cmenyebabkan program untuk segera keluar. Melakukan ini tergantung pada masing-masing pembuat program.
Jika tanda Ctrl+ kedua Ctidak mematikan program, coba Ctrl+ \, yang mengirimkan SIGQUIT , sinyal yang lebih keras (tetapi masih dapat ditangkap), atau coba Ctrl+ Zuntuk menunda program dan kemudian
kill
perintah (mis.kill %1
Yang mengirimkan SIGTERM , sinyal yang secara konvensional tidak terlalu kasar) dari SIGQUIT, ke nomor pekerjaan 1). Jika semuanya gagal, matikan program dengankill -KILL
, juga dikenal sebagaikill -9
, mengirim sinyal SIGKILL yang tidak dapat ditandingi .sumber