Ketika saya mencoba menghentikan sesuatu, saya menggunakan ^C
dan terkadang ^D
di terminal.
Apa perbedaan keduanya? Mengapa beberapa program tidak merespons ^C
, tetapi ^D
. Mengapa Terminal.app hanya berhenti ketika saya gunakan ^D
?
terminal
terminal.app
prosseek
sumber
sumber
Jawaban:
CtrlCmemberitahu terminal untuk mengirim
SIGINT
ke proses latar depan saat ini, yang secara default diterjemahkan menjadi mengakhiri aplikasi. CtrlDmemberitahu terminal bahwa ia harus mendaftarkan EOF pada input standar, yang mem-bash interpretasikan sebagai keinginan untuk keluar.sumber
Ctrl+ D(
^D
) berarti akhir file . Ini hanya bekerja pada awal baris (saya menyederhanakan sedikit), dan tidak berpengaruh jika program tidak membaca input dari terminal. Dalam percobaan Anda, beri^D
tahu shell bahwa Anda tidak akan mengetik lagi perintah, jadi itu keluar; kemudian terminal keluar karena subprogramnya telah berakhir.Ctrl+ C(
^C
) berarti "interupsi", yaitu, hentikan apa yang Anda lakukan. Secara teknis, menekan^C
mengirim sinyal INT , yang secara default menghentikan aplikasi, tetapi yang dalam banyak program berarti kembali ke tingkat atas (misalnya, dalam sebuah shell, berhenti mengetikkan baris perintah dan kembali ke prompt yang asli).Jika suatu program tidak merespons
^C
, Anda dapat mencoba Ctrl+ \(^\
). Ini mengirimkan sinyal QUIT , yang secara default menghentikan aplikasi, dan yang tidak begitu banyak menyadap program.Kunci lain yang mengirim sinyal adalah Ctrl+ Z(
^Z
). Ini mengirimkan sinyal TSTP , yang menghentikan sementara program yang berjalan di latar depan. (TSTP adalah kependekan dari "terminal stop"; ini mirip dengan STOP tetapi TSTP dapat diabaikan sedangkan STOP tidak bisa.) Dari shell, Anda dapat melanjutkan eksekusi program denganfg
perintah (melanjutkan di latar depan) ataubg
perintah (melanjutkan di Latar Belakang).Semua kunci ini dapat diubah dengan
stty
perintah. Beberapa program, khususnya program layar penuh yang memiliki ikatan utama, menonaktifkannya.sumber
KeyboardInterrupt
? Itu berhenti dengan ctrl + d (jika di awal baris), dan dengan ctrl + \.Menambahkan ke 2 jawaban yang sangat bagus di atas, berikut ini sebuah contoh:
Jika Anda mengetikkan
python
shell, ia akan membawa Anda ke prompt >>> python.Sekarang, jika Anda menekan
Ctrl+C
, itu akan mengatakanKeyboardInterrupt
dan tetap di >>>.Jika Anda masuk ke dalam for loop, misalnya dengan mengetiknya
for x in (text):
menunggu Anda untuk mengetik lebih lanjut dengan menunjukkan ... prompt, jika Anda menekanCtrl+C
sekarang, itu akan keluar dari pernyataan for dan kembali ke >> >> promptJika Anda menekan
Ctrl+D
kapan saja, apakah dalam >>> atau ... itu akan keluar dari python prompt dan kembali ke shell asli.Demikian pula, jika ssh'ed ke komputer lain, a
Ctrl+C
akan mengakhiri perintah yang ada,Ctrl+D
akan melakukan itu dan keluar dari mesin juga. (Juga,Delete
kuncinya sama dengan melakukan aCtrl+D
)sumber