Каков рабочий процесс обработки сигнала в 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).
сообщите мне, если вы хотите поговорить об этом: (скрыто)