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