Как Python обрабатывает сигнал?

Каков рабочий процесс обработки сигнала в python? Я устанавливаю обработчик сигнала, как при возникновении сигнала python вызывает мою функцию? Операционная система вызывает его так же, как программу C? Если я использую C-расширение python, он немедленно прерывается?


Теперь мне ясно, как процесс python обрабатывает сигнал. Когда вы устанавливаете сигнал модулем signal, модуль зарегистрирует функцию signal_handler (см. $ Src / Modules / signalmodule.c), которая установит ваш обработчик и пометит его как 1 ( Handlers [sig_num] .tripped = 1 ; ), затем вызовите Py_AddPendingCall, чтобы сообщить интерпретатору python. Интерпретатор python вызовет Py_MakePendingCalls для вызова PyErr_CheckSignals, который вызывает вашу функцию в основном цикле (см. $ Src / Python / ceval.c). сообщите мне, если вы хотите поговорить об этом: (скрыто)

5
задан Stephan A. Terre 15 April 2013 в 18:15
поделиться