English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico de Linguagem C

Controle de Fluxo de Linguagem C

Função C

Array C

Ponteiro C

String C

Estrutura de Linguagem C

Arquivo de Linguagem C

Outros C

Manual de Referência da Linguagem C

Uso e exemplo da função raise() da biblioteca C

Biblioteca padrão C - <signal.h>

Função da biblioteca C int raise(int sig) Provoca a geração de um sinal sig.sig Compatível com macros SIG.

Declaração

Abaixo está a declaração da função raise().

int raise(int sig)

Parâmetros

  • sig  -- Código do sinal a ser enviado. Abaixo estão alguns constantes de sinal importantes:

MacroSinal
SIGABRT(Sinal de Aborto) Terminação anormal do programa.
SIGFPE(Sinal de Ponto Flutuante-(Exceção de Ponto) Erro de operação aritmética, como divisão por zero ou overflow (não necessariamente operação de ponto flutuante).
SIGILL(Sinal de Instrução Ilegal) Imagem de função ilegal, como instrução ilegal, geralmente devido a uma variante no código ou a tentativa de executar dados.
SIGINT(Sinal de Interrupção) Sinal de interrupção, como ctrl-C, geralmente gerado pelo usuário.
SIGSEGV(Sinal de Violação de Segmentação) Acesso ilegal à memória, como acesso a uma unidade de memória inexistente.
SIGTERM(Sinal de Terminação) Envio de solicitação de terminação para o programa.

Retorno

Se for bem-sucedido, a função retorna zero; caso contrário, retorna um valor não nulo.

Exemplo Online

Abaixo está um exemplo de uso da função raise().

#include <signal.h>
#include <stdio.h>
void signal_catchfunc(int);
int main()
{
    int ret;
   ret = signal(SIGINT, signal_catchfunc);
   if( ret == SIG_ERR) 
   {
      printf("erro: não pode configurar o manipulador de sinal.\n");
      exit(0);
   }
   printf("iniciando a geração de um sinal\n");
   ret = raise(SIGINT);
   if( ret !=0 ) 
   {
      printf("erro: não pode gerar sinal SIGINT.\n");
      exit(0);
   }
   printf("saindo...\n");
   return(0);
}
void signal_catchfunc(int signal)
{
   printf("!! Captura de Sinal !!\n");
}

Vamos compilar e executar o programa acima, o que produzirá o seguinte resultado:

Iniciar a geração de um sinal
!! Captura de Sinal !!
Sair...

Biblioteca padrão C - <signal.h>