2014-09-11 9 views
1

Поскольку сигналы являются асинхронными, основная программа может быть в самом хрупкого состояния когда сигнал обрабатывается и, таким образом, в то время как функция обработчика сигнала выполняет. Таким образом, вы должны избегать выполнения любых операций ввода/вывода или вызова большинства библиотек и системных функций из обработчиков сигналовчто это означает, когда говорят «хрупкое состояние» в этом контексте?

Я хочу сделать тест под этим обстоятельством, но я не знаю, как превратить основной программа в хрупкое состояние

ссылка: Advanced Linux Programming

ответ

1

Я не думаю, что «хрупкое состояние» является техническим термином. Я не знаком с тем, как сигналы lernel Linux сигнализируют, но возможно, что ядро ​​отключает (или не имеет) определенные меры безопасности при обработке сигналов, таких как безопасность потоков на глобальных объектах или не ожидает других побочных эффектов.

Например, ваша цитата конкретно упоминает операции ввода-вывода. Операция ввода-вывода, как правило, асинхронна и вызывает прерывание при завершении, я ожидаю, что ядро ​​не хочет, чтобы обработчик прерываний ввода-вывода вызывался во время обработки сигнала (который, как я полагаю, вытеснит текущий код в сигнале обработчик) и потенциально перевести систему в неопределенное состояние, если обработчик прерываний изменил некоторый ресурс, используемый обработчиком сигнала, особенно если обрабатываемый сигнал был для процесса, который также ожидал операции ввода-вывода.

Смежные вопросы