Bir şeyi durdurmaya çalıştığımda ^Cbazen ^Dterminalde kullanıyorum.
İkisi arasındaki fark nedir? Neden bazı programı yanıt vermiyor ^C, ancak ^D. Neden Terminal.app kullandığımda sonlandırılıyor ^D?
Bir şeyi durdurmaya çalıştığımda ^Cbazen ^Dterminalde kullanıyorum.
İkisi arasındaki fark nedir? Neden bazı programı yanıt vermiyor ^C, ancak ^D. Neden Terminal.app kullandığımda sonlandırılıyor ^D?
Yanıtlar:
CtrlCterminale SIGINT, varsayılan olarak uygulamayı sonlandırmak anlamına gelen geçerli ön plan işlemine bir göndermesini söyler . CtrlDterminale, bash'ın çıkma isteği olarak yorumladığı standart girişe bir EOF kaydetmesi gerektiğini söyler.
Ctrl+ D( ^D) , dosyanın sonu anlamına gelir . Yalnızca bir satırın başında çalışır (biraz basitleştiriyorum) ve programın terminalden girdi okumaması durumunda etkisi yoktur. Denemenizde, ^Dkabuğa daha fazla komut yazmayacağınızı söyledi, bu yüzden çıkıldı; daha sonra terminal, alt programı sonlandırıldığı için çıktı.
Ctrl+ C( ^C) “kesme” anlamına gelir, yani ne yaptığınızı durdurun. Teknik olarak, tuşuna basılması , varsayılan olarak bir uygulamayı sonlandıran, ancak çoğu programda en üst seviyeye (örneğin bir kabuğun içinde komut satırını yazmayı bırakıp bozulmamış istemine geri dönme) giden INT sinyalini^C gönderir .
Bir program yanıt vermiyorsa ^C, Ctrl+ \( ^\) yöntemini deneyebilirsiniz . Bu , varsayılan olarak bir uygulamayı sonlandıran ve pek fazla programın kesişmediği QUIT sinyalini gönderir .
Sinyal gönderen başka bir anahtar Ctrl+ Z( ^Z). Ön planda çalışan programı duraklatan TSTP sinyalini gönderir . (TSTP “terminal durdurma” için kısadır; STOP'a benzer, ancak STOP yapamazken TSTP göz ardı edilebilir.) Kabuktan, bu programın fgkomutunu (ön planda devam ettirme) veya bgkomutla (devam ettirme modunda) devam ettirebilirsiniz. arka fon).
Bu tuşların tümü sttykomutuyla değiştirilebilir . Bazı programlar, özellikle anahtar bağlantıları olan tam ekran programlar, bunları devre dışı bırakır.
KeyboardInterrupt? Ctrl + d ile (bir satırın başındaysa) ve ctrl + \ ile çıkar.
Yukarıdaki 2 gerçekten iyi cevaplar ekleyerek, işte bir örnek:
Eğer yazarsanız pythonkabuğunda, bu Python en >>> istemine götürür.
Şimdi, vurursanız Ctrl+C, söyler KeyboardInterruptve >>> de kalır.
Eğer döngü için içine girerseniz, yazarak örneğin for x in (text):size bir ... istem görüntüleyerek daha da yazın vurduğunuz takdirde bekler Ctrl+Cşimdi, deyimi için çıkmak ve >>> istemi dönersiniz
Eğer vurursanız Ctrl+DHerhangi bir noktada, >>> veya ... 'da python isteminden çıkacak ve orijinal kabuğa geri dönecektir.
Benzer şekilde, başka bir makineye ssh'lenmişse, Ctrl+Cvarolan herhangi bir komutu sonlandıracak, Ctrl+Dbunu yapacak ve makineden çıkacaktır. (Ayrıca, Deleteanahtar a ile aynıdır Ctrl+D)