Mi a különbség a terminál Ctrl-z és Ctrl-c között?

97

Tudna valaki mondani a különbség a ctrl + z és a ctrl + c

Amikor a terminálban vagyok, mindkét kombináció leállítja a folyamatot, de mi a különbség mindkettő között?

    
készlet chaitanya lakkundi 13.08.2014 15:50
forrás

6 válasz

131

Ha az egyik oldalt elhagyjuk az élőlényeket, akkor a különbség egyszerű. A Control + C szinte azonnal megszakítja az alkalmazást, miközben a Control + Z p>

A héj különböző jeleket küld az alapul szolgáló alkalmazásoknak ezeken a kombinációkban:

  • Control + C (intr ellenőrző karakter) SIGINT-ot küld, amely megszakítja az alkalmazást. Általában ez megszakítja, de ez a döntéshez igazodik.

  • Vezérlés + Z (susp ellenőrző karakter) a SIGTSTP-t egy előtérben lévő alkalmazásba küldi, hatékonyan háttérbe helyezve, felfüggesztve. Ez akkor hasznos, ha valami olyan szerkesztőből kell megtörned, hogy elmenj és megragadsz néhány szükséges adatot. Visszatérhet az alkalmazásba afg (vagy%x, ahol ax ajobs -ban látható munkahelyszám) futtatásával.

    Ezt anano TEST parancs futtatásával teszteljük, majd a Control + Z billentyűk megnyomásával, majd aps aux | grep TEST futtatásával. Ez megmutatja, hogy anano folyamat még mindig fut:

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

    Továbbá láthatjuk (a státusz oszlopban lévő T-től), hogy a folyamat leállt . Tehát még él, de nem fut ... Le lehet folytatni.

    Egyes alkalmazások összeomolnak, ha vannak folyamatban lévő külső folyamatok (például egy webes kérelem), amelyek elaludhatnak az alvás közben.

válasz adott Oli 13.08.2014 15:56
forrás
14

Control + Z felfüggeszti a folyamatot (SIGTSTP) és Control + C SIGINT)

link

  

Unix-szerű rendszereknél a Control + Z a leggyakoribb alapértelmezett billentyűzet-leképezés a kulcsszekvenciához, amely felfüggeszti a folyamatot

link

  

A POSIX rendszerekben a sorozat azt eredményezi, hogy az aktív program SIGINT jelet kap. Ha a program nem határozza meg, hogyan kell kezelni ezt a feltételt, megszűnik. Jellemzően egy olyan program, amely kezeli a SIGINT-ot, még mindig megszünteti magát, vagy legalább befejezi a benne futó feladatot

    
válasz adott Sleep Deprived Bulbasaur 13.08.2014 15:56
forrás
10
A

Ctrl + C kifejezést aSIGINT jelű folyamat megölésére használják, más szóval udvarias kill . p>

Ctrl + Z a folyamat felfüggesztésére szolgál, ha a SIGSTOP jelet küldi el, visszavonható, és a folyamat újraindítható.

Ha azonban egy folyamatot felfüggesztettünk, akkor újra afg (resume in forground) és abg (resume in background) paranccsal folytathatjuk újra a munkát, de nem tudom folytatni egy megölt műveletet, ez a különbség a Ctrl + C & Ctrl + Z .

Hogyan lehet nézni felfüggesztett folyamatot?

A feladatok használatával a kimenet:

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

Hogyan lehet megölni egy felfüggesztett folyamatot a háttérben?

A kill parancs használatával:

kill% n ahol az n a munkahelyen megjelenő számok lesznek, ezért szeretném megölni a macskát:kill %1.

    
válasz adott nux 14.08.2014 09:49
forrás
6

Ez segíthet

   Ctrl + Z egy folyamat felfüggesztésére szolgál, ha elküldi a SIGSTOP jelet, amelyet a program nem tud lehallgatni. Míg a Ctrl + C protokollt a SIGINT jelzéssel történő megöléshez használják, és egy program lehallgatható, így meg tudja tisztítani saját magát, mielőtt kilépne minden.

    
válasz adott Graham 13.08.2014 15:58
forrás
3

ha a ctrl + c billentyűt megnyomja, akkor azt jelenti, hogy SIGINT-t küld a folyamatnak. mint írja ezt a parancsot:kill -SIGINT <your_pid>. Meg fogja ölni a folyamatot. Ezért nem láthatja, ha ps parancs van Ha megnyomja a ctrl + z billentyűt, akkor azt jelenti, hogy elküldi a SIGSTOP-ot a folyamathoz. mint írja ezt a parancsot:kill -SIGKSTOP <your_pid>. Megállítja a folyamatot, de a folyamat még életben van. Így újra aktiválhatja a folyamatot, ha a SIGCONT-ot elküldi a folyamathoz.

    
válasz adott P_O_I_S_O_N 14.08.2014 09:24
forrás
3

Egyszerűen:

    A CTRL - C azt kéri, hogy a program abbahagyja .

  • felfüggeszti és megy a háttérbe

    CTRL - Z

    Ezzel később újraindíthatja afg parancsot. A fennmaradó háttérfunkciók megszakadnak, amikor kilép a bejelentkezési shellből.

válasz adott thomasrutter 15.08.2014 02:39
forrás