Funzione di libreria C - raise ()
Descrizione
La funzione di libreria C. int raise(int sig) causa il segnale sigda generare. Ilsig argomento è compatibile con le macro SIG.
Dichiarazione
Di seguito è riportata la dichiarazione per la funzione signal ().
int raise(int sig)
Parametri
sig- Questo è il numero del segnale da inviare. Di seguito sono riportate alcune importanti costanti di segnale standard:
Sr.No. | Macro e segnale |
---|---|
1 | SIGABRT (Signal Abort) Interruzione anomala, come quella avviata dalla funzione di interruzione. |
2 | SIGFPE (Eccezione in virgola mobile del segnale) Operazione aritmetica errata, come divisione per zero o un'operazione che determina un overflow (non necessariamente con un'operazione in virgola mobile). |
3 | SIGILL (Signal Illegal Instruction) Immagine della funzione non valida, come un'istruzione illegale. Ciò è generalmente dovuto a un danneggiamento del codice oa un tentativo di eseguire dati. |
4 | SIGINT (Interruzione del segnale) Segnale di attenzione interattivo. Generalmente generato dall'utente dell'applicazione. |
5 | SIGSEGV (Violazione della segmentazione del segnale) Accesso non valido alla memoria: quando un programma tenta di leggere o scrivere al di fuori della memoria, gli viene allocato. |
6 | SIGTERM (Signal Terminate) Richiesta di terminazione inviata al programma. |
Valore di ritorno
Questa funzione restituisce zero in caso di successo e diversamente da zero.
Esempio
L'esempio seguente mostra l'utilizzo della funzione signal ().
#include <signal.h>
#include <stdio.h>
void signal_catchfunc(int);
int main () {
int ret;
ret = signal(SIGINT, signal_catchfunc);
if( ret == SIG_ERR) {
printf("Error: unable to set signal handler.\n");
exit(0);
}
printf("Going to raise a signal\n");
ret = raise(SIGINT);
if( ret !=0 ) {
printf("Error: unable to raise SIGINT signal.\n");
exit(0);
}
printf("Exiting...\n");
return(0);
}
void signal_catchfunc(int signal) {
printf("!! signal caught !!\n");
}
Compiliamo ed eseguiamo il programma sopra per produrre il seguente risultato:
Going to raise a signal
!! signal caught !!
Exiting...