Как работают обработчики сигналов python и c? - PullRequest
0 голосов
/ 17 декабря 2018

И Python, и C позволяют пользователям устанавливать обработчик сигналов.Однако, если программа Python вызывает код C и этот код C устанавливает обработчик сигнала C, тогда программа Python также устанавливает обработчик сигнала Python для того же сигнала, как будет обрабатываться этот сигнал впоследствии?

Подробнеев частности, что происходит, когда пользователи вызывают signal.signal в Python?Устанавливает ли Python в дополнение к обработчику сигналов Python обработчик сигналов C, который заменит старый обработчик сигналов C?Если да, то где старый обработчик сигнала C возвращается в среде Python?

man sigaction говорит:

Если oldact не равен NULL, предыдущее действие сохраняетсяв oldact.

Но Python signal.signal возвращает старый обработчик сигнала Python, а не старый обработчик сигнала C.

1 Ответ

0 голосов
/ 17 декабря 2018

Похоже, что Python отбрасывает старый обработчик сигнала.Python устанавливает здесь собственный обработчик C (исходный код Python) .Этот обработчик управляет передачей сигналов Python.

PyOS_setsig возвращает старый обработчик C, но связанная строка отбрасывает его.Реализация Python signal.signal также возвращает «предыдущий» обработчик, но он отслеживает только внутренний список (см. Переменную Handlers).Он не знает ни о каких обработчиках языка C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...