我有一个访问内存映射设备的asyncio代码。我尝试读取和写入设备中的地址。如果地址无效,我会收到SIGBUS错误,并且进程崩溃。
我为SIGBUS添加了一个信号处理程序来处理访问错误。现在进程挂起而不是崩溃,我的处理程序似乎没有执行。
def handler(loop):
loop.remove_signal_handler(signal.SIGBUS)
print("Access violation")
loop.stop()
logging.error("Access violation")
asyncio.get_event_loop().add_signal_handler(signal.SIGBUS, handler, asyncio.get_event_loop())
我在一个不使用ayncio的单独应用程序中尝试了同样的事情,我得到了相同的结果。在python中是否有任何特定于处理SIGBUS错误的内容?
BTW我可以毫无问题地处理SIGTERM和SIGINT。