English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
Abaixo está a declaração da função raise().
int raise(int sig)
sig -- Código do sinal a ser enviado. Abaixo estão alguns constantes de sinal importantes:
Macro | Sinal |
---|---|
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. |
Se for bem-sucedido, a função retorna zero; caso contrário, retorna um valor não nulo.
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...