Как и pause(), sigsuspend() временно приостанавливает процесс до тех пор, пока не будет получен сигнал (и обработан связанным с ним обработчиком, если таковой предусмотрен), возвращая -1 и устанавливая errno в EINTR.

В отличие от pause(), sigsuspend() временно устанавливает маску сигналов процесса в значение, находящееся по адресу, указанному в mask, на период ожидания появления сигнала. Как только сигнал поступает, маска сигналов восстанавливается в то значение, которое она имела до вызова sigsuspend(). Это позволяет процессу ожидать появления определенного сигнала за счет блокирования всех остальных сигналов[63].

12.3. Доступные сигналы

Linux предоставляет в распоряжение процессов сравнительно немного сигналов, и все они собраны в табл. 12.1.

Таблица 12.1. Сигналы

Сигнал Описание Действие по умолчанию
SIGABRT Доставляется вызовом abort(). Прервать, сбросить дамп
SIGALRM Истек срок действия alarm(). Прервать
SIGBUS Ошибка, зависящая от оборудования. Прервать, сбросить дамп
SIGCHLD Дочерний процесс прерван. Игнорировать
SIGCONT Выполнение процесса продолжается после приостановки. Игнорировать
SIGFPE Арифметическая ошибка. Прервать, сбросить дамп
SIGHUP Закрыт процесс, управляющий терминалом. Прервать
SIGILL Обнаружена недопустимая инструкция. Прервать
SIGINT Пользователь послал символ прерывания (^C). Прервать
SIGIO Принят асинхронный ввод-вывод. Прервать
SIGKILL Не перехватываемое прерывание процесса. Прервать
SIGPIPE Процесс пишет в канал при отсутствии читателя. Прервать
SIGPROF Закончился сегмент профилирования. Прервать
SIGPWR Обнаружен сбой питания. Прервать
SIGQUIT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату