Terminalde Ctrl-z ve Ctrl-c arasındaki fark nedir?

95

Herkes bana ctrl + z ve ctrl + c arasındaki farkı söyleyebilir mi?

Terminalde olduğumda, her iki kombinasyon da mevcut işlemi durdurur, ancak ikisi arasındaki fark tam olarak nedir?

    
sordu chaitanya lakkundi 13.08.2014 15:50

6 cevap

130

Eğer kenarları bir tarafa bırakırsak, fark basittir. Kontrol + C uygulamayı hemen hemen iptal eder, ancak Kontrol + Z , arka plana şant eder, askıya alınır.

Kabuk, bu kombinasyonlardaki temel uygulamalara farklı sinyaller gönderir:

  • Kontrol + C (kontrol karakteri intr ) uygulamayı kesecek olan SIGINT öğesini gönderir. Genellikle iptal edilmesine neden olur, ancak bu karar verme uygulamasına bağlıdır.

  • Kontrol + Z (kontrol karakteri susp ), SIGTSTP'yi bir ön plan uygulamasına gönderir ve etkin bir şekilde arka planda yerleştirir. Bu, bir editör gibi bir şeyden ayrılmanız ve ihtiyacınız olan bazı verileri almanız gerekiyorsa yararlıdır. % Co_de% dosyasını çalıştırarak uygulamaya geri dönebilirsiniz (veya fg , %x %, x 'de gösterildiği gibi iş numarasıdır).

    Bunu jobs çalıştırıp Control + Z 'e basarak ve nano TEST ' yi çalıştırarak test edebiliriz. Bu bize ps aux | grep TEST işleminin hala devam ettiğini gösterir:

    oli     3278  0.0  0.0  14492  3160 pts/4    T    13:59   0:00 nano TEST
    

    Ayrıca, (durum sütununda bulunan T'den), sürecin durdurulduğunu görebiliriz. . Yani hala hayatta, ama çalışmıyor ... Tekrar başlanabilir.

    Bazı uygulamalar, uykudayken zaman aşımına uğrayabilecek dış süreçlere (web isteği gibi) sahiplerse çökecektir.

verilen cevap Oli 13.08.2014 15:56
14

Kontrol + Z bir işlemi askıya alır ( SIGTSTP ) ve Kontrol + C bir işlemi keser ( SIGINT )

İşte

  

Unix benzeri sistemlerde, Control + Z bir işlemi askıya alan anahtar dizisi için en yaygın varsayılan klavye eşlemesidir

İşte

  

POSIX sistemlerinde, sıra, aktif programın bir SIGINT sinyali almasına neden olur. Program bu koşulun nasıl ele alınacağını belirtmezse, sonlandırılır. Tipik olarak, bir SIGINT ile ilgilenen bir program hala kendini sonlandırır veya en azından içinde çalışan görevi sonlandırır.

    
verilen cevap Sleep Deprived Bulbasaur 13.08.2014 15:56
10

Ctrl + C , SIGINT sinyali ile bir işlemi öldürmek için kullanılır, başka bir deyişle kibar öldür olur.

Ctrl + Z , bir uyku sinyali gibi olan SIGSTOP sinyalini göndererek bir işlemi askıya almak için kullanılır. geri alındı ​​ve işlem tekrar başlatılabilir.

Ancak, bir işlem askıya alındığında, fg (resume in forground) ve bg (resume in background) tarafından yeniden başlatabiliriz, ancak öldürülmüş bir işlemi devam ettiremiyorum, Ctrl + arasında bir fark var. C & amp; Ctrl + Z .

Askıya alınmış süreç nasıl görüntüleniyor?

İşler komutunu kullanarak çıkış şöyle olur:

[1]-  Stopped                 cat
[2]+  Stopped                 vi

Arka planda askıya alınmış bir işlemin nasıl öldürülmesi

nasıl yapılır?

kill komutunu kullanarak:

n n , iş komutlarında görünen sayılar olacaktır, bu yüzden kediyi öldürmek istiyorum: kill %1 .

    
verilen cevap nux 14.08.2014 09:49
6

Bu yardımcı olmalı

  

Ctrl + Z , program tarafından yakalanamayan SIGSTOP sinyalini göndererek bir işlemi askıya almak için kullanılır. SIGINT sinyali ile bir işlemi öldürmek için Ctrl + C kullanılırken, bir program tarafından yakalanabilir ve böylece çıkmadan önce kendi kendini temizleyebilir ya da bütün.

    
verilen cevap Graham 13.08.2014 15:58
3

ctrl + c tuşlarına bastığınızda, SIGINT'i işleminize gönderirsiniz demektir. Bu komutu yazdığınız gibi: kill -SIGINT <your_pid> . Bu senin sürecini öldürecek. Bu nedenle, ps komutu verildiğinde bunu göremiyorsunuz.
ctrl + z tuşlarına bastığınızda, SIGSTOP'u işleminize gönderirsiniz demektir. Bu komutu yazdığınız gibi: kill -SIGKSTOP <your_pid> . Prosesinizi durduracak, ancak süreç hala hayatta. Böylece işleminize SIGCONT göndererek işleminizi yeniden etkinleştirebilirsiniz.

    
verilen cevap P_O_I_S_O_N 14.08.2014 09:24
3

Basitçe söylemek gerekirse:

  • CTRL - C , programın iptal edildiğini istemektedir.

  • CTRL - Z , programı askıya al ve arka plana git 'e zorlar.

    Bu, daha sonra fg komutuyla devam etmenizi sağlar. Giriş kabuğundan çıktığınızda kalan arka plan görevleri öldürülür.

verilen cevap thomasrutter 15.08.2014 02:39

Etiketlerdeki diğer soruları oku