ctrl c vs. ctrl z ile ön plan işi


26

Ctrl+ ZOysa işini durdurur Ctrl+ Cişini öldürür.

Neden? Diğer yol daha mantıklı olmaz mıydı?

z@z-lap:~$ sleep 100&
[1] 4458
z@z-lap:~$ sleep 200&
[2] 4459
z@z-lap:~$ jobs
[1]-  Running                 sleep 100 &
[2]+  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^Z
[1]+  Stopped                 sleep 100
z@z-lap:~$ jobs
[1]+  Stopped                 sleep 100
[2]-  Running                 sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^C
z@z-lap:~$ jobs
[2]+  Running                 sleep 200 &

4
"Diğer yol daha mantıklı olmaz mıydı?" Neden olacağını düşündüğünü belirtebilir misin?
glglgl

Yanıtlar:


55

İş kontrol notasyonu konusunda kafanızın karışabileceğini düşünüyorum. Özellikle "Durduruldu", bir işin hala hayatta olduğu, ancak herhangi bir şeyi işleme yeteneğinin tutulduğu anlamına gelir (işlemciye herhangi bir şeyi işlemesi için herhangi bir zaman tanınmaz). Bu, doğru bir teknik terim olmasa da, etkili bir şekilde "Duraklat" veya "Askıya alınmış" bir durumdur.

  • CtrlCbir işi "durdurmaz", iptal eder veya öldürür. Teknik olarak, programa ne yaptığını iptal edip derhal çıkmasını söyleyen bir kesme sinyali gönderilmesine neden olur. Bazı programlar bu sinyali duyacak ve çıkmadan önce kendi başlarına bazı acil temizlik çalışmaları yapacaktır. Diğerleri sinyale cevap vermeyecek ve daha sonra iptal edilecektir.

  • CtrlZdiğer yandan bir işi “durdurur”. Yine bu bir sinyal ile yapılır, ancak bu kez bir 'kesme' sinyali yerine 'dur'. Bu etkili bir şekilde beklemeye alır ve kontrolü kabuğa geri döndürür, ancak işi gerçekten öldürmez. Böyle bir işin çalışmaya devam etmesini istiyorsanız bg, son durdurulan işi arka plana göndermek için bir komut verebilirsiniz. Ardından &, ilk başta koştuğunuz gibi bir arka plan işi olarak çalışmaya devam eder . Ayrıca fg, son durdurulan işi ön planda devam ettirmek için de kullanabilirsiniz (bıraktığı yerden devam etmesine ve tekrar etkileşime girmenize izin verir).


Hala Ctrl + Z'nin SIGKILL göndereceğini ve Ctrl + C'nin SIGINIT gönderdiğini düşünüyorum. Böylece Ctrl + Z de işi öldürür. Ancak benim örneğimden Ctrl + Z sadece söylediğin gibi işi durdurur. Bu yüzden biraz kafam karıştı.
neo0

10
@ neo0 - belki de bazı özel kurulumlara alışkınsınızdır? Bunları yapılandırabilirsiniz - muhtemelen bu haritalara dayanan bir uygulamanızın olması gerekmemeniz gerekir. Ancak varsayılan yapılandırma CTRL+C=SIGINTve CTRL+Z=SIGTSTP.
mikeserv

3
Caleb haklı (+1). Ctrl-Z “dondurma” olarak algılamanız gereken programı durdurur, ancak bu program hala hafızadadır, dosyaları açılmıştır, vb. Öldürülmez / sonlandırılmaz.
Olivier Dulac

"Askıya Al", "dur" dan daha net olabilir.
Russell Borogove

1
@jiggunjer Bu şeylerin şekli ile ilgili. Bu cevap , iki adımın neden gerekli olduğu konusunda biraz bilgi verir ve bu adım, bu adımları daha acısız hale getirmek için bazı işlevler sunar.
Caleb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.