С помощью функции raise() можно посылать программные сигналы
типа sig в исполняемую программу. Если программа установила
обработчик сигнала для указанного типа sig, эта процедура
будет выполнена. Если никакой обработчик не установлен, будет выполнена
стандартное действие (SIG_DFL) для данного типа сигнала.
В примере ниже приведена программа, которая запрашивает ввод двух
чисел для деления. Если делитель равен 0, программе посылается сигнал
SIGFPE, чтобы завершить ее (рис. 7).
#include <signal.h>
int main()
{
int a,b;
printf("Число : ");
scanf("%d",&a);
printf("делится на : ");
scanf("%d",&b);
if(b==0)
raise(SIGFPE);
else
printf("Результат = %d\n",a/b);
return 0;
}
Рис. 7. Использование raise().
Для передачи сигнала некоторому процессу существует функция kill(),
синтаксис которой приведен ниже.
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int signalnumber);
Запись kill(getpid(), signalnumber) эквивалентна raise(signalnumber).
После вызова kill() в записи таблиц целевого процесса устанавливается
соответствующий сигналу бит. Кроме того, должны быть выполнены следующие
условия: