6 999
contributi
m (rimosso template autori) |
S3v (discussione | contributi) mNessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
{{Bash_scripting}} | {{Bash_scripting}} | ||
__TOC__ | |||
Ogni processo in Unix e Unix-like può ricevere dei segnali da altri processi (se appartengono allo stesso utente oppure da root). Di seguito i principali, tra quelli previsti da | Ogni processo in Unix e Unix-like può ricevere dei segnali da altri processi (se appartengono allo stesso utente oppure da [[root]]). Di seguito i principali, tra quelli previsti da [[POSIX]]: | ||
* '''INT''' : è equivalente a <code>Ctrl-c</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione; | * '''INT''' : è equivalente a <code>Ctrl-c</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione; | ||
* '''QUIT''' : è equivalente a <code>Ctrl-\</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione con core dump; | * '''QUIT''' : è equivalente a <code>Ctrl-\</code> da tastiera, per uno script associato a un terminale, se non è eseguito in background. L'azione di default è la terminazione con core dump; | ||
Riga 17: | Riga 17: | ||
* '''USR2''' : è un segnale lasciato da definire all'utente. L'azione di default è la terminazione. | * '''USR2''' : è un segnale lasciato da definire all'utente. L'azione di default è la terminazione. | ||
Il ''core dump'' è un dump dello stato (o una sua parte) del processo terminato, a scopo di debug. Può essere limitato e anche disattivato interamente. Se non attivo, l'azione eseguita è equivalente a una terminazione senza core dump. | Il ''core dump'' è un dump dello stato (o una sua parte) del processo terminato, a scopo di [[debug]]. Può essere limitato e anche disattivato interamente. Se non attivo, l'azione eseguita è equivalente a una terminazione senza core dump. | ||
==Invio di segnali== | == Invio di segnali == | ||
Alcuni segnali vengono inviati automaticamente, al sussistere di determinate condizioni, ma possono anche essere inviati esplicitamente con il comando <code>kill</code> come tutti gli altri.<br/> | Alcuni segnali vengono inviati automaticamente, al sussistere di determinate condizioni, ma possono anche essere inviati esplicitamente con il comando <code>kill</code> come tutti gli altri.<br/> | ||
Sintassi: <code>kill [ -s SIGNAL ] pid</code><br/> | Sintassi: <code>kill [ -s SIGNAL ] pid</code><br/> | ||
Invia un segnale (di default: TERM) al processo con il | Invia un segnale (di default: TERM) al processo con il PID scelto. Si noti che l'invio è asincrono, ossia <code>kill</code> non resta in attesa che il processo con PID scelto effettui l'azione associata al segnale. Di conseguenza il comando ha sempre successo, salvo che il PID non esista o non possa ricevere il segnale (per esempio perché non è dello stesso utente). | ||
==Cattura dei segnali== | == Cattura dei segnali == | ||
Le azioni da intraprendere possono essere modificati con l'istruzione <code>trap</code>.<br/> | Le azioni da intraprendere possono essere modificati con l'istruzione <code>trap</code>.<br/> | ||
Sintassi: <code>trap 'stringa' SIGNAL1 [ ... ]</code><br/> | Sintassi: <code>trap 'stringa' SIGNAL1 [ ... ]</code><br/> | ||
Riga 37: | Riga 37: | ||
In caso di esecuzione di una subshell le azioni da intraprendere in seguito alla ricezione di un segnale vengono reimpostate al loro valore di default, ma i segnali ignorati continuano a restare ignorati. | In caso di esecuzione di una subshell le azioni da intraprendere in seguito alla ricezione di un segnale vengono reimpostate al loro valore di default, ma i segnali ignorati continuano a restare ignorati. | ||
===Esempi=== | === Esempi === | ||
* Ignora i segnali di terminazione: | * Ignora i segnali di terminazione: | ||
<pre> | <pre> |
contributi