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...