Un "lavoro in background" è solo uno che non interagisce con l'utente:non controlla il tty e fa solo il suo lavoro (generalmente in silenzio). Un lavoro in primo piano è il contrario, detiene il controllo del tty per interagire con l'utente.
Control-Z sospende il processo in primo piano più recente (l'ultimo processo che interagisce con il tty) (a meno che quel processo non prenda provvedimenti per ignorare la sospensione, come fanno normalmente le shell). Questo generalmente ti riporterà alla tua shell, dalla quale puoi generalmente inserire il comando bg
per spostare il processo appena sospeso in background (lasciando che continui a essere eseguito) o fg
per riportarlo in primo piano.
Premendo Ctrl+Z viene inviato il TSTP
segnale al tuo processo. Ciò interrompe l'esecuzione (il kernel non pianificherà più tempo di CPU per il processo) e il processo è in attesa di un CONT per continuare l'elaborazione.
Puoi emulare/replicare questo tramite kill -TSTP
e kill -CONT
(dal kill
invierà un segnale nominato al tuo processo, nonostante il nome!)
La shell ha la funzionalità di "mettere in secondo piano" il processo, ma questa è una relazione tra la shell e il processo. Il processo in sé non ha realmente il concetto di "sfondo" o "primo piano".
Vedi qui per maggiori informazioni.
Considera questo comando, che richiede ca. 4,5 secondi sul mio portatile:
echo 2^10000000 | bc -lq | wc -c
Quando premi Ctrl +Z , il calcolo sarà sospeso. Hai la possibilità di riprendere il calcolo in primo piano usando fg
o riprenderlo in background utilizzando bg
. Quest'ultimo è più o meno equivalente all'esecuzione di:
echo 2^10000000 | bc -lq | wc -c &