Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
foreground o background? 63<br />
foreground o background? 5.7.2<br />
I processi hanno anche un’altra caratteristica: possono girare in foreground oppure in<br />
background. Il primo caso si ha quando un processo occupa una tty per il tempo della<br />
sua esecuzione. Il secondo quando un processo viene lanciato senza vincolare alcuna tty.<br />
Ad esempio, l’esecuzione del comando:<br />
$ ls<br />
corsoUnix.tex<br />
la_shell.tex<br />
piu_in_alto.tex<br />
regexpr.tex<br />
storia_Unix.tex<br />
$<br />
è avvenuta in foreground, occupando la tty alla quale ha restituito l’output per tutto<br />
il tempo di esecuzione. Nel caso di ls questo è semplicemente irrilevante, dato che il<br />
comando termina in una frazione di secondo. Ma un programma come una simulazione<br />
o un demone che provvede un particolare servizio, come un server http o ftp, girano<br />
decisamente meglio in background. Per lanciare un processo in background è sufficiente<br />
accodare una & (e commerciale) alla riga di comando. Ad esempio per chiamare il popolare<br />
browser netscape è possibile:<br />
$ netscape &<br />
[1] 687<br />
$<br />
La shell dalla quale abbiamo lanciato netscape ci ritorna subito il prompt e dopo<br />
qualche istante di caricamento appare la finestra di Netscape. Un metodo alternativo<br />
consiste nel lanciare un processo in foreground, interromperlo con un Control-Z e<br />
mandarlo in background con il comando bg:<br />
$ netscape<br />
^Z<br />
[1]+ Stopped netscape<br />
$ bg<br />
$<br />
La notazione ^Z indica la pressione contemporanea del tasto Control e del tasto z.<br />
Le shell 9 offrono una gestione avanzata del -ground dei processi. Quando abbiamo<br />
lanciato netscape in background, la shell ci ha stampato un breve rapporto sul processo,<br />
includendo un numero fra parentesi quadre. Questo numero costituisce una più confortevole<br />
sistema rispetto al PID per gestire i processi. Precedendo questo numero con<br />
il simbolo % è possibile riferirsi a quel processo. Se ad esempio avessimo lanciato due<br />
processi in background come in:<br />
9<br />
Solo quelle più moderne, ossia più recenti del 1990