2012-09-13 12:51:29 +0000 2012-09-13 12:51:29 +0000
88
88

Wat is het effect van CTRL + Z op een unixLinux toepassing

Ik was nieuwsgierig en verward dat wat precies het gedrag is van CTRl+Z.

Ik weet het, als een proces op de voorgrond draait, en we drukken op ctrl+z, dan gaat het naar de achtergrond.

Maar wat gebeurt er precies.

Blijft het zijn werk doen, of wordt het opgeschort, en gestopt op het punt waar het was.

En als het op dat punt wordt gestopt, en wat is de betekenis van achtergrondtaak.

Antwoorden (4)

74
74
74
2012-09-13 12:57:13 +0000

Een “achtergrondtaak” is er gewoon een die geen interactie heeft met de gebruiker – hij controleert de tty niet en doet gewoon zijn ding (meestal in stilte). Een voorgrond-taak is het omgekeerde, hij heeft de controle over de tty om met de gebruiker te communiceren.

Control-Z zet het meest recente voorgrondse proces (het laatste proces dat interactie had met de tty) op non-actief (tenzij dat proces stappen onderneemt om het op non-actief zetten te negeren, zoals shells normaal doen). Dit brengt je over het algemeen terug naar je shell, van waaruit je over het algemeen het commando bg kunt invoeren om het zojuist opgeschorte proces naar de achtergrond te verplaatsen (zodat het door kan gaan met draaien) of fg om het terug naar de voorgrond te brengen.

58
58
58
2012-09-13 12:57:09 +0000

Het indrukken van Ctrl+Z stuurt het TSTP signaal naar je proces. Dit stopt de uitvoering (de kernel plant geen CPU tijd meer in voor het proces) en het proces wacht op een CONT om verder te gaan met de verwerking.

Je kunt dit emuleren/repliceren via kill -TSTP en kill -CONT (aangezien kill een genomineerd signaal naar je proces zal sturen, ondanks de naam!)

De shell heeft de functionaliteit om het proces ‘op de achtergrond’ te zetten, maar dit is een relatie tussen de shell en het proces. Het proces zelf heeft niet echt het concept van ‘achtergrond’ of ‘voorgrond’.

Zie hier voor meer info.

15
15
15
2012-09-13 13:02:52 +0000

Overweeg dit commando, dat op mijn laptop ongeveer 4,5 seconden duurt:

echo 2^10000000 | bc -lq | wc -c

Als je op Ctrl+Z drukt, wordt de berekening onderbroken. Je hebt de optie om de berekening op de voorgrond te hervatten met fg, of op de achtergrond met bg. Dit laatste komt min of meer overeen met het uitvoeren van:

echo 2^10000000 | bc -lq | wc -c &
9
9
9
2012-09-13 12:57:30 +0000

Een proces wordt opgeschort en gestopt door op ctrl+z te drukken. Met fg kun je de opgeschorte opdracht naar de voorgrond halen, met bg kun je hem op de achtergrond laten draaien.

Zie http://linuxreviews.org/beginner/jobs/ voor meer informatie.