Функции библиотеки C -raise()

Стандартная библиотека C - <signal.h>

Описание

Функции библиотеки Cint raise(int sig)Вызовет генерацию сигналаsig。sigПараметр совместим с макросами SIG.

raiseЭта функция входит в стандартную библиотеку C и используется для отправки сигналов текущему процессу. Она определена в<signal.h>заголовочном файле и позволяет программе отправлять сигналы самой себе для вызова соответствующего обработчика сигналов.

Объявление

Ниже приведено объявление функции raise().

int raise(int sig)

Параметр

  • sig-- Код сигнала для отправки. Ниже приведены некоторые важные стандартные константы сигналов:
Макросsignal
SIGABRT(Сигнал Abort) Программа завершилась аварийно.
SIGFPE(Сигнал Floating-Point Exception) Возникла ошибка арифметической операции, например деление на ноль или переполнение (не обязательно операция с плавающей точкой).
SIGILL(Сигнал Illegal Instruction) Недопустимый образ функции, например недопустимая инструкция, обычно вызванная вариантом в коде или попыткой выполнить данные.
SIGINT(Сигнал Interrupt) Сигнал прерывания, например Ctrl-C, обычно генерируемый пользователем.
SIGSEGV(Сигнал Segmentation Violation) Недопустимый доступ к памяти, например доступ к несуществующей ячейке памяти.
SIGTERM(Сигнал Terminate) Сигнал запроса завершения, отправленный этой программе.

Возвращаемое значение

В случае успеха функция возвращает ноль; в противном случае она возвращает ненулевое значение.

Пример

В следующем примере демонстрируется использование функции raise().

Пример

#include<stdio.h>
#include<stdlib.h>
#include<signal.h>

void signal_catchfunc(int);


int main() {

   int ret;

   signal(SIGINT, signal_catchfunc);


   printf("Начинаем генерацию сигнала\n");
   ret = raise(SIGINT);
   if (ret != 0) {
      printf("Ошибка, невозможно сгенерировать сигнал SIGINT\n");
      exit(0);
}

printf("Выход....\n");
   return 0;
}

void signal_catchfunc(int signal) {
   printf("Перехвачен сигнал\n");
}

Давайте скомпилируем и запустим приведённую выше программу, которая выдаст следующий результат:

Start generating a signal
!! Signal Capture !!
Exit...

Стандартная библиотека C - <signal.h>

Другие расширения