【发布时间】:2019-05-18 03:07:56
【问题描述】:
Python 和 C 都允许用户安装信号处理程序。但是,如果 Python 程序调用了 C 代码,并且该 C 代码安装了 C 信号处理程序,那么 Python 程序也为相同的信号安装了 Python 信号处理程序,那么之后该信号将如何处理?
更具体地说,当用户在 Python 中调用 signal.signal 时会发生什么?除了 Python 信号处理程序之外,Python 是否安装了一个 C 信号处理程序来替换旧的 C 信号处理程序?如果是,那么 Python 环境中返回的旧 C 信号处理程序在哪里?
man sigaction 说:
如果
oldact不为NULL,则上一个操作保存在oldact中。
但是 Python signal.signal 返回旧的 Python 信号处理程序而不是旧的 C 信号处理程序。
【问题讨论】:
-
它们是在不同的进程中还是你通过 ctypes 调用一个库?
-
@stark 在同一个进程中