2016-05-06 3 views
2

Скажите, что процесс выполняется в основном методе при получении и обработке сигнала. Когда обработчик сигнала закончен, возвращается ли процесс обратно к линии в главном, где был получен сигнал, или он возвращается к сигнальному вызову?Где обработчик сигнала возвращается к?

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

Спасибо.

ответ

3

Возврат туда, где он находился в вашем коде при срабатывании сигнала.

Многие библиотеки и приложения используют одни и те же механизмы для реализации многозадачности без потоков (например, libmill).

+0

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

+0

Да. Я изменил формулировку. –

3

После завершения обработки сигнала ваш код продолжает выполняться в точке, где он был, когда был получен сигнал. Если ваш код выполнял системный вызов, он может завершиться неудачно с EINTR. Для получения дополнительной информации см. Сигнал (7).

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