Kill (Unix)In informatica kill (dalla lingua inglese to kill, uccidere) è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che invia un segnale ad uno o più processi tipicamente per provocarne la terminazione (come suggerisce il nome), oppure visualizza informazioni sui segnali. kill è anche il nome di una chiamata di sistema definita dallo standard POSIX[2] che invia un segnale ad un processo. Di fatto il comando kill agisce invocando l'omonima chiamata di sistema. Il comando killLa sintassi generale del comando kill presenta due forme: una per inviare un segnale ad uno o più processi, e l'altra per ottenere informazioni sui segnali. Invio di segnaliLa sintassi in questo caso è: kill [opzioni] [--] arg1 [arg2 …] I parametri arg identificano i processi a cui inviare i segnali, che possono essere specificati nei due modi che seguono:
Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni. Il comportamento predefinito è quello di inviare il segnale SIGTERM. Tra le opzioni vi sono:
Ad esempio "kill -s SIGKILL 1234", "kill -9 1234" e "kill -KILL 1234" sono equivalenti tra loro. Informazioni sui segnaliLa sintassi in questo caso è: kill -l [valore] Il parametro facoltativo valore può indicare:
Se il parametro valore non è specificato, viene prodotto sullo standard output un elenco dei segnali noti al sistema. EsempiManda il segnale SIGTERM ai processi aventi PID 1234 e 5689: kill 1234 5689 Manda il segnale SIGKILL al processo 1234: kill -s SIGKILL 1234 Manda il segnale SIGKILL al processo 1234: kill -KILL 1234 Manda il segnale SIGKILL al processo 1234: kill -9 1234 Elenca i segnali disponibili: kill -l Manda il segnale SIGTERM ai processi del job corrente della shell (solitamente l'ultimo avviato): kill %% Manda il segnale SIGTERM ai processi del job numero 5 della shell: kill %5 AlternativeIn alcuni sistemi operativi Unix e Unix-like sono disponibili anche i comandi killall e pkill, che inviano un segnale a tutti i processi che soddisfano dei criteri di ricerca specificati come parametri. Con questi comandi è ad esempio possibile inviare un segnale a tutti i processi di un dato utente, o a tutti quelli il cui nome contiene una stringa specificata. La chiamata di sistema killLa chiamata di sistema kill è dichiarata nello header file signal.h: #include <signal.h>
int kill(pid_t pid, int sig);
Prima di inviare il segnale, essa verifica che il chiamante abbia il permesso di inviare segnali al processo o al gruppo di processi indicato. Il tipo pid_t è un tipo opaco che rappresenta un PID e che inoltre può anche assumere un valore uguale o inferiore a zero. Il parametro pid indica il processo o il gruppo di processi a cui inviare il segnale:
Il parametro sig indica il segnale da spedire; le costanti che identificano i segnali sono elencate nello header file signal.h. Se è 0 non viene spedito alcun segnale, ma si verifica unicamente la possibilità di inviare segnali al processo o al gruppo di processi indicati. Valore di ritornoIn caso di successo viene ritornato il valore 0, altrimenti viene ritornato il valore -1 e la variabile errno indica l'errore specifico. ErroriQuando kill ritorna -1, errno può valere:
Note
Voci correlate
|