如何捕获在ctypes中抛出的异常?

3

我正在使用ctypes从Python调用一些名为C的代码。在C库的某个地方,可能会发生异常和/或调用abort()。是否有任何方法可以在我的Python调用者代码中捕获这种情况?(平台是Linux)

1个回答

3

您可以在SIGABRT上设置信号处理程序来处理abort()引起的信号。但是,失败的断言可能会伴随着损坏的内存和其他糟糕的情况 - 通常有一个原因导致断言失败。因此,通常终止应用程序是您可以做的最好的事情(除了在终止之前在处理程序中显示/记录错误)。


使用Python的signal模块,我能够捕获通过ctypes调用的C库引发的SIGABRT信号吗? - PaulMcG
1
我现在已经尝试过了,在我的C代码中调用abort()并不会向Python中的处理程序发出SIGABRT信号。因此,我还需要在C代码中设置信号处理程序。感谢您的建议! - PaulMcG
@Paul McGuire,我也遇到了你在这个方面遇到的同样问题。请问你能指导我如何解决吗?如果能提供代码片段或示例,将不胜感激。非常感谢。 - user5143593

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接