Сигнал або віртуальне переривання є|з'являється,являється| повідомленням|сполученням|, яке система посилає процесу або один процес посилає іншому. Коли процес одержує|отримує| сигнал, виконання програми процесу уривається, і управління передається на підпрограму (функцію) - обробник сигналу. Після|потім| виконання обробника сигналу виконання перерваної програми поновлюється з тієї крапки|точки|, на якій вона була перервана.
У операційній системі передбачено велике число типів сигналів, але|та| більшість з|із| цих типів зарезервована для системних цілей - це сигнали, які операційна система посилає процесу. Проте|однак| є і сигнали, якими процеси можуть обмінюватися між собою.
За умовчанням реакція на більшість сигналів - припинення процесу, що одержав|отримав| сигнал, тобто|цебто|, якщо процес одержує|отримує| сигнал, обробка якого в ньому не передбачена, то процес-одержувач сигналу завершується. Проте|однак| для більшості типів сигналів процес може встановити обробник даного сигналу або встановити ігнорування даного сигналу.
Обробник сигналу в процесі має вид функції такого вигляду|виду|:
void имя_функции (int sigtype);Параметром даної функції є|з'являється,являється| тип сигналу (один і той же обробник може бути встановлений|установлений| для обробки сигналів різних типів).
Для установки свого обробника сигналу, для його відміни або для установки ігнорування сигналу використовується системний виклик signal
Функції-обробники сигналів – це звичайні|звичні| функції Сі, вони мають доступ до всіх глобально видимим змінним і функціям.
Основні типи сигналів:
SIGALARM(14) – Якщо процес не зареєстрував обробник цього сигналу, то обробник за умовчанням завершує процес. Даний сигнал буде доставлений процесу через вказаний в дужках проміжок часу, це здійснюється за допомогою системного виклику abort.
SIGCHLD - Сигнал відправляється|вирушає| батьківському процесу у разі|в разі| завершення його дочірнього процесу. За умовчанням сигнал ігнорується.
SIGCONT - Сигнал продовження виконання програми після|потім| зупинки. Обробника за умовчанням немає.
SIGKILL (9) - Сигнал аварійного завершення процесу. По цьому сигналу процес завершується негайно — без звільнення|визволення| ресурсів. Цей сигнал не може бути перехоплений, заблокований або перевизначений самим процесом, завжди використовується стандартний обробник операційної| системи. Цей сигнал використовується для гарантованого завершення процесу.
SIGSTOP - Сигнал припинення роботи процесу. Цей сигнал не може бути перехоплений, заблокований або перевизначений. Використовується для гарантованого припинення роботи процесу з|із| повним|цілковитим| збереженням|зберіганням| його стану і можливістю|спроможністю| відновлення|поновлення|.
SIGTERM (15) - Сигнал завершення процесу, як правило використовується для коректного завершення його роботи.
Рис. 9.1. Приклад|зразок| використання сигналу SIGTERM
SIGUSR1, SIGUSR2 - «Призначені» для користувача сигнали — можуть використовуватися процесами для всіляких повідомлень. Обробник за умовчанням завершує процес.
Рис. 9.2. Використання сигналів при міжпроцесовому| обміні
Сигнали є|з'являються,являються| обмеженим засобом|коштом| міжпроцесовому | обміну. Вони чудово підходять|пасують,личать| для повідомлень, але|та| не можуть використовуватися для передачі інформації між процесами. Сигнали передаються без яких-небудь супутніх даних, тому вони звичайно комбінуються з|із| іншими способами обміну.