I segnali

I segnali sono uno strumento di comunicazione tra processi e possono essere paragonati agli equivalenti software degli interrupt.
In totale i sistemi Unix hanno a disposizione 31 segnali, i cui valori possono essere espressi in forma numerica da 1 a 31, oppure nella corrispondente forma simbolica.
Possono essere attivati sia con appositi comandi di sistema sia attraverso la pressione di alcuni tasti su terminale, purchè sia stata in precedenza definita l' associazione tra il carattere generato dal tasto e il segnale prescelto.
Per visualizzare la tabella contenente l' elenco dei segnali e i caratteri a cui essi sono associati sul proprio sistema, è possibile digitare il comando kill -l ; si deve poi ricordare che l' associazione tra i valori simbolici e i valori numerici è definita nel file /usr/include/sys/signal.h.

Dato che i segnali possono assumere, all' interno di un insieme predefinito, valori di tipo numerico o, equivalentemente, di tipo simbolico, ognuno di essi contiene implicitamente le informazioni necessarie al riconoscimento dell' evento che li ha generati.

Ad esempio, i 2 segnali:

Le modalità con le quali il sistema agisce sui processi che hanno ricevuto un segnale seguono una logica prefissata che dipende dai segnali stessi; se il segnale SIGKILL, valore numerico 9, ad esempio, provoca la terminazione incondizionata del processo a cui viene inviato ( non puņ infatti essere ignorato o catturato ), tutti gli altri segnali, con appositi programmi e specifiche procedure di shell, possono essere ignorati o aggirati.

Altri segnali importanti oltre a quelli citati sono:

Il comando che forza l' invio dei segnali ai processi ( i cui pid devono essere forniti come comandi obbligatori ) è kill, che ha la sintassi:
kill [ - signal ] pid
Il pid del processo si può ricavare con il comando ps .
Nel caso in cui signal non venga specificato, viene forzato l' invio del segnale SIGTERM, valore numerico 15, che provoca la terminazione immediata di tipo "soft" del processo a cui viene inviato.

Come abbiamo già precisato qui sopra, una lista completa dei segnali utilizzabili in Unix può essere ottenuta con il comando:
kill - l

L' utente può inviare i segnali, tramite kill, soltanto ai processi di sua proprietà; il superuser non è sottoposto a tale limitazione.


Bottoni