Система имеет фиксированный набор событий, которые могут возникать. Каждое событие имеет свое уникальное имя. Такие имена называются сигналами.
Есть сигналы, которые присутствуют практически во всех UNIX, но есть сигналы, специфичные для конкретной версии UNIX
Сигналы – простейшая форма взаимодействия процессов. Сигналы генерируются ядром и позволяют уведомить процесс или группу процессов о наступлении какого-либо события.
Процесс может послать сигнал только членам своей группы, в том числе всем одновременно. Процесс, обладающий привилегиями суперпользователя, может послать сигнал любому процессу.
Сигналы могут посылаться
1. от одного процесса другому как средство межзадачного взаимодействия.
2. драйвером терминала (консоли), например, для уничтожения процесса по нажатию клавиш Control+C.
3. Ядро может посылать сигналы, если процесс выполняет недопустимую инструкцию, например, деление на ноль.
4. пользователь с помощью команды kill.
У процесса есть выбор: проигнорировать сигнал, перехватить его или позволить сигналу убить процесс. Если процесс выбрал перехват сигнала, он должен указать процедуры обработки сигналов, тогда управление перейдет к обработчику сигнала. Когда процедура обработки сигнала завершает свою работу, управление снова возвращается в то место процесса, в котором оно находилось, когда сигнал пришел.