Adakah yang bisa memberi tahu saya perbedaan antara ctrl+ zdan ctrl+ c?
Ketika saya berada di terminal, kedua kombinasi menghentikan proses saat ini, tetapi apa sebenarnya perbedaan antara keduanya?
command-line
chaitanya lakkundi
sumber
sumber
Jawaban:
Jika kita membiarkan case edge ke satu sisi, perbedaannya sederhana. Control+ Cmembatalkan aplikasi segera sementara Control+ Zmendorongnya ke latar belakang, ditangguhkan.
Shell mengirim sinyal berbeda ke aplikasi yang mendasarinya pada kombinasi ini:
Control+ C(karakter kontrol
intr
) mengirimkan SIGINT yang akan mengganggu aplikasi. Biasanya menyebabkannya dibatalkan, tetapi ini tergantung pada aplikasi untuk memutuskan.Control+ Z(karakter kontrol
susp
) mengirim SIGTSTP ke aplikasi latar depan, secara efektif meletakkannya di latar belakang, ditangguhkan. Ini berguna jika Anda perlu keluar dari sesuatu seperti editor untuk pergi dan mengambil beberapa data yang Anda butuhkan. Anda dapat kembali ke aplikasi dengan menjalankanfg
(atau di%x
manax
nomor pekerjaan seperti yang ditunjukkan padajobs
).Kita dapat menguji ini dengan menjalankan
nano TEST
, lalu menekan Control+ Zdan kemudian menjalankanps aux | grep TEST
. Ini akan menunjukkan kepada kitanano
proses masih berjalan:Lebih lanjut, kita dapat melihat (dari T itu, yang ada di kolom status) bahwa proses telah dihentikan . Jadi masih hidup, tapi tidak berjalan ... Itu bisa dilanjutkan.
Beberapa aplikasi akan macet jika mereka memiliki proses eksternal yang sedang berlangsung (seperti permintaan web) yang mungkin habis saat mereka tertidur.
sumber
bg
(bukanfg
) untuk membatalkan penangguhan aplikasi yang telah Ctrl + Z'ed tanpa memasukkannya kembali ke latar depan; secara efektif memberi Anda kontrol dari kedua shell yang memulai aplikasi dan aplikasi itu sendiri, seolah-olah Anda telah digunakan&
saat memulai aplikasi. Ini sering berguna ketika Anda lupa memulainya dengan&
:)fg
lagi!ctrl c
atauctrl z
? Ini default ke SID (bash)?Control+ Zmenunda proses (
SIGTSTP
) dan Control+ Cmemotong proses (SIGINT
)http://en.wikipedia.org/wiki/Control-Z
http://en.wikipedia.org/wiki/Control-C
sumber
Ctrl+ Cdigunakan untuk membunuh proses dengan sinyal
SIGINT
, dengan kata lain + adalah pembunuhan yang sopan .Ctrl+ Z digunakan untuk menunda proses dengan mengirimkannya sinyal
SIGTSTP
, yang seperti sinyal tidur, yang dapat dibatalkan dan proses dapat dilanjutkan kembali.Namun ketika suatu proses ditangguhkan, kita dapat melanjutkannya kembali dengan
fg
(melanjutkan di latar depan) danbg
(melanjutkan di latar belakang), tetapi saya tidak dapat melanjutkan proses yang terbunuh, itu adalah perbedaan antara menggunakan Ctrl+ C& Ctrl+ Z.Bagaimana kita bisa melihat proses yang ditangguhkan?
The
jobs
perintah memberikan output seperti ini:Bagaimana cara membunuh proses yang ditangguhkan di latar belakang?
Dengan menggunakan
kill
perintah:kill %n
di manan
nomor ditampilkan olehjobs
perintah. Jadi jika saya ingin membunuh kucing:kill %1
.sumber
Untuk membuatnya lebih sederhana:
CTRL-C meminta agar program dibatalkan .
CTRL-Z Memaksa program untuk menangguhkan dan pergi ke latar belakang .
Ini memungkinkan Anda untuk melanjutkannya nanti dengan perintah
fg
. Tugas latar belakang yang tersisa terbunuh saat Anda keluar dari shell login.sumber
Ini akan membantu
sumber
SIGTSTP
, yang dapat ditangkap oleh program. Ada empat sinyal yang berbeda, yang dapat menangguhkan programSIGSTOP
,SIGTSTP
,SIGTTIN
,SIGTTOU
. Dari mereka hanyaSIGSTOP
tidak bisa diblokir. Tiga lainnya digunakan oleh terminal untuk menghentikan proses dalam kondisi yang berbeda.ketika Anda menekan ctrl+ c, itu berarti Anda mengirim SIGINT ke proses Anda. seperti Anda ketik perintah ini:
kill -SIGINT <your_pid>
. Ini akan membunuh Anda proses Anda. Itu sebabnya Anda tidak dapat melihatnya saat mengeluarkan perintah ps .Ketika Anda menekan ctrl+ z, itu berarti Anda mengirim SIGSTOP ke proses Anda. seperti Anda ketik perintah ini:
kill -SIGKSTOP <your_pid>
. Ini akan menghentikan proses Anda, tetapi prosesnya masih hidup. Jadi Anda dapat mengaktifkan kembali proses Anda dengan mengirimkan SIGCONT ke proses Anda.sumber