Provided by: manpages-it_2.80-3_all bug

NOME

       signal - elenco dei segnali disponibili

DESCRIZIONE

       Linux  supporta sia i segnali POSIX affidabili (d'ora in avanti "segnali predefiniti") che
       i segnali real-time POSIX.

   Disposizioni dei segnali
       Ciascun segnale ha una disposizione attuale, che determina come si  comporta  il  processo
       quando il segnale viene recapitato.

       Le  voci  nella colonna "Azione" della tabella specificano la disposizione predefinita del
       segnale, come segue:

       Term   L'azione di default è di terminare il processo.

       Ign    L'azione di default è di ignorare il segnale.

       Core   L'azione di default è di  terminare  il  processo  e  fare  un  dump  core  (vedere
              core(5)).

       Stop   L'azione di default è di arrestare il processo.

       Cont   L'azione di default è di continuare il processo se esso è attualmente fermo.

       Un  processo  può  cambiare  la  disposizione  di  un  segnale usando sigaction(2) o (meno
       portabile) signal(2).  Usando queste chiamate di sistema, un processo può assumere uno dei
       seguenti comportamenti al recapito del segnale: eseguire l'azione predefinita; ignorare il
       segnale; o intercettare il segnale con  un  signal  handler,  una  funzione  definita  dal
       programmatore che è automaticamente invocata quando il segnale è recapitato.

       La disposizione del segnale è un attributo per processo: in un'applicazione multithreaded,
       la disposizione di un particolare segnale è la stessa per tutti i thread.

   Maschera segnale e segnali pendenti
       Un segnale può essere bloccato, che significa che esso non verrà recapitato fino a  quando
       non  verrà  sbloccato.   Un segnale viene definito pendente nel periodo di tempo che passa
       tra quando è stato generato e quando è recapitato.

       Ciascun thread in un processo ha una maschera segnale indipendente, che  indica  l'insieme
       di  segnali  che  il  thread  attualmente  sta bloccando.  Un thread può manipolare la sua
       maschera segnale usando pthread_sigmask(3).   In  un'applicazione  tradizionale  a  thread
       singolo, sigprocmask(2) può essere usato per manipolare la maschera segnale.

       Un  segnale  può  essere generato (e quindi pendente) per un processo nel suo insieme (per
       esempio quando è inviato usando kill(2)) o per uno specifico  thread  (per  esempio  certi
       segnali,  come  SIGSEGV  e  SIGFPE,  generati  come  conseguenza  dell'esecuzione  di  una
       istruzione specifica in linguaggio macchina è diretta al thread, come lo  sono  i  segnali
       indirizzati  a  uno  specifico  thread  usando  pthread_kill(3)).   Un  segnale diretto al
       processo può essere recapitato a uno qualunque dei thread che  attualmente  non  hanno  il
       segnale  bloccato.   Se  più  di  uno dei thread ha il segnale sbloccato, allora il kernel
       sceglie un thread arbitrario a cui recapitare il segnale.

       Un  thread  può  ottenere  l'insieme  di  segnali  che  attualmente  ha  pendenze   usando
       sigpending(2).   Questo  insieme  consisterà  nell'unione  del  set dei segnali diretti ai
       processi pendenti e il set di segnali pendenti per il thread chiamante.

   Segnali standard
       Linux supporta i segnali standard elencati di seguito.  Molti numeri di segnale  dipendono
       dall'architettura, come indicato nella colonna "Valore" (dove sono indicati tre valori, il
       primo è normalmente valido per alpha e sparc, quello in  mezzo  per  i386,  ppc  e  sh,  e
       l'ultimo   per   mips.   A  -  denota  che  un  segnale  è  assente  sulla  corrispondente
       architettura).

       Prima i segnali descritti nello standard POSIX.1-1990 originale.

       Segnale    Valore    Azione   Commento
       ───────────────────────────────────────────────────────────────────────────────────
       SIGHUP        1       Term    La linea sul terminale che ha il controllo è stata
                                     agganciata o il processo che ha il controllo è morto
       SIGINT        2       Term    Interrupt da tastiera
       SIGQUIT       3       Core    Segnale d'uscita della tastiera
       SIGILL        4       Core    Istruzione illegale
       SIGABRT       6       Core    Segnale d'abbandono di abort(3)
       SIGFPE        8       Core    Eccezione di virgola mobile
       SIGKILL       9       Term    Termina il processo
       SIGSEGV      11       Core    Riferimento di memoria non valido
       SIGPIPE      13       Term    Pipe rotta: scrittura su una pipe priva di
                                     lettori
       SIGALRM      14       Term    Segnale del timer da alarm(2)
       SIGTERM      15       Term    Segnale di termine
       SIGUSR1   30,10,16    Term    Segnale 1 definito dall'utente
       SIGUSR2   31,12,17    Term    Segnale 2 definito dall'utente
       SIGCHLD   20,17,18    Ign     Figlio fermato o terminato
       SIGCONT   19,18,25    Cont    Continua se fermato
       SIGSTOP   17,19,23    Stop    Ferma il processo
       SIGTSTP   18,20,24    Stop    Stop digitato da tty
       SIGTTIN   21,21,26    Stop    Input da tty per un processo in background
       SIGTTOU   22,22,27    Stop    Output da tty per un processo in background

       I segnali SIGKILL e SIGSTOP non possono essere intercettati, bloccati o ignorati.

       Seguono i segnali che non sono nello standard POSIX.1-1990 ma sono descritti  in  SUSv2  e
       POSIX.1-2001.

       Segnale      Valore    Azione   Commento
       ──────────────────────────────────────────────────────────────────────────────────────────
       SIGBUS      10,7,10     Core    Errore sul bus (accesso erroneo alla memoria)
       SIGPOLL                 Term    Evento suscettibile di polling (Sys V). Sinonimo di SIGIO
       SIGPROF     27,27,29    Term    Timer del profiler scaduto
       SIGSYS      12,-,12     Core    Argomento sbagliato alla routine (SVr4)
       SIGTRAP        5        Core    Trappola per trace/breakpoint
       SIGURG      16,23,21    Ign     Condizione urgente sul socket (4.2 BSD)
       SIGVTALRM   26,26,28    Term    Allarme virtuale (4.2 BSD)
       SIGXCPU     24,24,30    Core    Ecceduto tempo limite di CPU (4.2 BSD)
       SIGXFSZ     25,25,31    Core    Limite dimensione file superato (4.2 BSD)

       Fino a Linux 2.2 incluso, il comportamento predefinito per SIGSYS, SIGXCPU, SIGXFSZ, e (su
       architetture diverse da SPARC e MIPS) SIGBUS era di terminare il processo (senza  eseguire
       un  core dump).  (In alcuni altri sistemi Unix l'azione di default per SIGXCPU e SIGXFSZ è
       di terminare il processo senza eseguire un core dump.)  Linux 2.4 è conforme ai  requisiti
       di POSIX 1003.1-2001 per questi segnali, terminando il processo con un core dump.

       E ora altri vari segnali.

       Segnale      Valore    Azione   Commento
       ───────────────────────────────────────────────────────────────────────────────────
       SIGIOT         6        Core    Trappola IOT. Sinonimo di SIGABRT
       SIGEMT       7,-,7      Term
       SIGSTKFLT    -,16,-     Term    Errore dello stack del coprocessore (inutilizzato)
       SIGIO       23,29,22    Term    I/O ora possibile (4.2 BSD)
       SIGCLD       -,-,18     Ign     Sinonimo di SIGCHLD
       SIGPWR      29,30,19    Term    Mancanza di corrente (System V)
       SIGINFO      29,-,-             Sinonimo di SIGPWR
       SIGLOST      -,-,-      Term    Perso il lock del file
       SIGWINCH    28,28,20    Ign     Dimensioni finestra cambiate (4.3 BSD, Sun)
       SIGUNUSED    -,31,-     Term    Segnale inutilizzato (diventerà SIGSYS)

       (Il segnale 29 è SIGINFO / SIGPWR su alpha ma SIGLOST su sparc.)

       SIGEMT  non  è  specificato  in POSIX.1-2001, tuttavia appare in molti altri sistemi Unix,
       dove la sua azione predefinita è tipicamente di terminare il processo con un core dump.

       SIGPWR (non specificato in POSIX.1-2001) è tipicamente  ignorato  in  via  predefinita  in
       questi altri Unix dove appare.

       SIGIO  (non  specificato  in  POSIX.1-2001)  è  ignorato in via predefinita in molti altri
       sistemi Unix.

   Segnali Real-time
       Linux supporta i segnali real-time come originariamente definiti  nelle  estensioni  real-
       time  di  POSIX.1b  (e  ora  incluse  in POSIX.1-2001).  L'intervallo di segnali real-time
       supportati è  definito  dalle  macro  SIGRTMIN  e  SIGRTMAX.   POSIX.1-2001  richiede  che
       un'implementazione supporti almeno i segnali real-time _POSIX_RTSIG_MAX .

       Il  kernel  Linux supporta un intervallo di 32 diversi segnali real-time, numerati da 33 a
       64.  Comunque, l'implementazione di glibc POSIX dei thread usa internamente due (per NTPL)
       o  tre (per LinuxThreads) segnali real-time (vedere pthreads(7)), e sistemare il valore di
       SIGRTMIN in modo adatto  (a  34  o  35).   Dato  che  l'intervallo  di  segnali  real-time
       disponibili  varia a seconda dell'implementazione dei thread di glibc (e questa variazione
       può avvenire al run-time in accordo con kernel e glibc disponibili), e poiché l'intervallo
       dei  segnali real-time varia tra i vari sistemi Unix, i programmi non dovrebbero riferirsi
       ai segnali real-time usando numeri prefissati.  Dovrebbero invece sempre fare  riferimento
       ai  segnali  real-time usando la notazione SIGRTMIN+n, e includendo controlli adatti (run-
       time) perché SIGRTMIN+n non ecceda SIGRTMAX.

       Diversamente  dai  segnali  predefiniti,  i  segnali  real-time  non   hanno   significati
       predefiniti:  l'intero  insieme  dei segnali real-time può essere usato per scopi definiti
       dall'applicazione.  (Si noti, tuttavia, che l'implementazione LinuxThreads usa i primi tre
       segnali real-time).

       L'azione  predefinita  per  i  segnali  real-time  non  gestiti è di terminare il processo
       ricevente.

       I segnali real-time sono distinti dal seguente:

       1.  Istanze multiple di segnali real-time possono essere accodate.  Viceversa, se  istanze
           multiple  di  un segnale predefinito sono consegnate mentre questo segnale è bloccato,
           allora viene accodata solo un'istanza.

       2.  Se il segnale è inviato usando sigqueue(2), un valore di accompagnamento (che  sia  un
           intero  o  un  puntatore) può essere inviato con il segnale.  Se il processo ricevente
           stabilisce un gestore per questo segnale usando  il  flag  SA_SIGINFO  a  sigaction(2)
           allora  esso  può  ottenere  questo  dato attraverso il campo si_value della struttura
           siginfo_t passata come secondo argomento al gestore.  Inoltre i campi si_pid e  si_uid
           di  questa struttura possono essere usati per ottenere PID e ID di un utente reale del
           processo che invia il segnale.

       3.  I segnali real-time sono recapitati in  un  ordine  garantito.   I  segnali  real-time
           multipli  dello  stesso  tipo  sono recapitati nell'ordine in cui vengono inviati.  Se
           segnali real-time differenti  sono  inviati  ad  un  processo,  essi  sono  consegnati
           partendo  dal  segnale  con  il  numero più basso.  (Cioè i segnali con i numeri bassi
           hanno la priorità maggiore).

       Se sia i segnali predefinit che quelli real-time sono in attesa di un processo, POSIX  non
       specifica  quale consegnare per primo.  Linux, come molte altre implementazioni, in questo
       caso dà priorità ai segnali predefiniti.

       conformemente a POSIX, un'implementazione deve permettere che almeno i  segnali  real-time
       _POSIX_SIGQUEUE_MAX   vengano   accodati  a  un  processo.   Tuttavia  Linux  fa  le  cose
       diversamente.  Nei kernel fino a e incluso il 2.6.7, Linux impone  un  limite  globale  al
       numero di segnali real-time accodati per tutti i processi.  Questo limite può essere visto
       e cambiato (con privilegi)  attraverso  il  file  /proc/sys/kernel/rtsig-max  .   Un  file
       correlato,  /proc/sys/kernel/rtsig-nr,  può  essere usato per trovare quanti segnali real-
       time sono attualmente accodati.  In Linux 2.6.8, queste interfacce /proc  sono  sostituite
       dal  limite  di risorsa RLIMIT_SIGPENDING che specifica un limite per utente per i segnali
       accodati.  Vedere setrlimit(2) per ulteriori dettagli.

   Funzioni async-signal-safe
       Una routine di manipolazione dei segnali stabilita da sigaction(2) o signal(2)  deve  fare
       molta  attenzione,  poiché qualunque processo può essere interrotto in un punto arbitrario
       durante l'esecuzione del programma.  POSIX ha il concetto di  "funzione  sicura".   Se  un
       segnale  interrompe l'esecuzione di una funzione non sicura, e handler chiama una funzione
       non sicura, allora il comportamento del programma non  è  definito  POSIX.1-2003  richiede
       all'implementazione  di  garantire  che  le  seguenti  funzioni possano essere chiamate in
       sicurezza in un gestore di segnali:

           _Exit()
           _exit()
           abort()
           accept()
           access()
           aio_error()
           aio_return()
           aio_suspend()
           alarm()
           bind()
           cfgetispeed()
           cfgetospeed()
           cfsetispeed()
           cfsetospeed()
           chdir()
           chmod()
           chown()
           clock_gettime()
           close()
           connect()
           creat()
           dup()
           dup2()
           execle()
           execve()
           fchmod()
           fchown()
           fcntl()
           fdatasync()
           fork()
           fpathconf()
           fstat()
           fsync()
           ftruncate()
           getegid()
           geteuid()
           getgid()
           getgroups()
           getpeername()
           getpgrp()
           getpid()
           getppid()
           getsockname()
           getsockopt()
           getuid()
           kill()
           link()
           listen()
           lseek()
           lstat()
           mkdir()
           mkfifo()
           open()
           pathconf()
           pause()
           pipe()
           poll()
           posix_trace_event()
           pselect()
           raise()
           read()
           readlink()
           recv()
           recvfrom()
           recvmsg()
           rename()
           rmdir()
           select()
           sem_post()
           send()
           sendmsg()
           sendto()
           setgid()
           setpgid()
           setsid()
           setsockopt()
           setuid()
           shutdown()
           sigaction()
           sigaddset()
           sigdelset()
           sigemptyset()
           sigfillset()
           sigismember()
           signal()
           sigpause()
           sigpending()
           sigprocmask()
           sigqueue()
           sigset()
           sigsuspend()
           sleep()
           socket()
           socketpair()
           stat()
           symlink()
           sysconf()
           tcdrain()
           tcflow()
           tcflush()
           tcgetattr()
           tcgetpgrp()
           tcsendbreak()
           tcsetattr()
           tcsetpgrp()
           time()
           timer_getoverrun()
           timer_gettime()
           timer_settime()
           times()
           umask()
           uname()
           unlink()
           utime()
           wait()
           waitpid()
           write()

CONFORME A

       POSIX.1

BUG

       SIGIO e SIGLOST hanno lo stesso valore.  L'ultimo è commentato nel sorgente del kernel, ma
       il processo di costruzione di alcuni software pensa ancora che il segnale 29 sia SIGLOST.

VEDERE ANCHE

       kill(1),  kill(2),  killpg(2), setitimer(2), setrlimit(2), sgetmask(2), sigaction(2), sig‐
       nal(2),  signalfd(2),  sigpending(2),  sigprocmask(2),  sigqueue(2),  sigsuspend(2),  sig‐
       waitinfo(2),  bsd_signal(3), raise(3), sigvec(3), sigset(3), strsignal(3), sysv_signal(3),
       core(5), proc(5), pthreads(7)

COLOPHON

       Questa pagina fa parte del rilascio 2.78 del progetto man-pages di Linux.  Si può  trovare
       una   descrizione   del   progetto,   e  informazioni  su  come  riportare  bachi,  presso
       http://www.kernel.org/doc/man-pages/.   Per  la  traduzione  in  italiano  si   può   fare
       riferimento a http://www.pluto.it/ildp/collaborare/