Gestione dei processi

()

In ambiente Unix si parla di processo per indicare un programma in esecuzione. Sappiamo che Unix è un sistema operativo multitasking, ma fino ad ora abbiamo sfruttato questa caratteristica solo grazie alla multiutenza, che ci permetteva di “toccare con mano” il fatto che la macchina, avendo più utenti collegati contemporaneamente, stava effettivamente elaborando più di un programma.

Per sfruttare pienamente e con comodità il multitasking si deve disporre di un terminale gra fico che ci permetta di aprire sullo schermo più finestre in cui lanciare contemporaneamente diversi processi in modalità interattiva; dove è possibile fare altrettanto su un normale terminale alfanumerico, ma anche in questo caso si deve disporre di un programma (ad esempio screen) che ci consenta di simulare un
ambiente con più fi nestre.

Vedremo in maggiore dettaglio l’ambiente X Window in seguito, per ora ci limiteremo a dire che è possibile lanciare delle applicazioni che lavorano autonomamente ed indipendentemente dalle altre in una regione dello schermo ( finestra) riservata ad ognuna di esse.

Per lanciare un’applicazione, come al solito è necessario dare un comando al prompt della shell, ma cosi facendo, come abbiamo visto no ad ora, non possiamo utilizzare contemporaneamente sullo stesso terminale un altro programma, almeno fi no a quando non saremo usciti dal programma in esecuzione. Esiste un modo per sganciare il processo ” figlio” (il programma da eseguire) dal processo “padre” (ad esempio la shell da cui si lancia il programma) rendendo i due processi indipendenti ed autonomi.

Se aggiungiamo il carattere”&” (e commerciale) alla fine della riga che invoca un certo comando, tale comando sara’ eseguito in una ” sessione” separata e quindi potremo utilizzare contemporaneamente la shell (da cui possiamo nel frattempo lanciare altri processi) ed il programma che abbiamo lanciato.
Questo è possibile a patto che il programma “fi glio” non richieda una interazione da parte dell’utente mediante il terminale (ad esempio un input da tastiera, o una  visualizzazione molto “verbosa” di messaggi in output).

Vediamo un esempio molto semplice che possiamo provare anche su un normale terminale alfanumerico. Il comando yes visualizza una serie di “y” sullo schermo

Interruzione e  sospensione di un programma, Control-c, Control-z
Per interrompere l’esecuzione di un programma dobbiamo battere Ctrl-c (break). Se invece di interromperlo volessimo solo sospenderne temporaneamente l’esecuzione, invece di break dovremmo battere Ctrl-z (stop):

$ yes
y
y
y

(l’utente batte Ctrl-z )
[1]+ Stopped yes
$ _

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?