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

Qual è l'effetto di CTRL + Z su un'applicazione unix\Linux

Ero curioso e confuso che cosa è esattamente il comportamento di CTRl+Z.

Lo so, se un processo è in esecuzione in primo piano, e premiamo ctrl+z, va in background.

Ma cosa succede esattamente.

Continua a fare il suo lavoro, o viene sospeso e fermato al punto in cui si trovava.

E se viene fermato a quel punto, e qual è il significato di lavoro in background.

Risposte (4)

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

Un “lavoro in background” è semplicemente uno che non interagisce con l'utente – non controlla la tty e fa solo le sue cose (generalmente in silenzio). Un lavoro in primo piano è il contrario, tiene il controllo della tty per interagire con l'utente.

Control-Z sospende il più recente processo in foreground (l'ultimo processo che ha interagito con la tty) (a meno che quel processo non prenda provvedimenti per ignorare la sospensione, come fanno normalmente le shell). Questo generalmente vi riporterà alla vostra shell, dalla quale potrete generalmente inserire il comando bg per spostare il processo appena sospeso in background (lasciandolo continuare a funzionare) o fg per riportarlo in primo piano.

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

Premendo Ctrl+Z si invia il segnale TSTP al processo. Questo ferma l'esecuzione (il kernel non programmerà altro tempo di CPU al processo) e il processo è in attesa di un CONT per continuare l'elaborazione.

Puoi emulare/replicare questo tramite kill -TSTP e kill -CONT (poiché kill invierà un segnale nominato al tuo processo, nonostante il nome!)

La shell ha la funzionalità di ‘background’ del processo, ma questa è una relazione tra la shell e il processo. Il processo stesso non ha realmente il concetto di ‘background’ o ‘foreground’.

Vedi qui per maggiori informazioni.

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

Considerate questo comando, che richiede circa 4,5 secondi sul mio portatile:

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

Quando premi Ctrl+Z, il calcolo viene sospeso. Avete un'opzione per riprendere il calcolo in primo piano usando fg, o riprenderlo in background usando bg. Quest'ultimo è più o meno equivalente all'esecuzione di:

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

Un processo viene sospeso e fermato premendo ctrl+z. Con fg potete spostare il processo sospeso in primo piano, con bg potete eseguirlo in background.

Vedere http://linuxreviews.org/beginner/jobs/ per maggiori informazioni.