views:

80

answers:

1

I am working with some C code called from Python using ctypes. Somewhere in the bowels of the C library, an exception is occurring and/or abort() is being called. Is there any way I can catch this in my Python caller code? (Platform is Linux)

+3  A: 

You might be able to setup a signal handler on SIGABRT to handle the signal caused by abort(). However, failed assertions might go along with corrupted memory and other bad things - there's usually a reason why an assertion failed. So usually terminating the applications is the best thing you can do (except displaying/logging an error in your handler before terminating).

ThiefMaster
Will using the Python signal module allow me to trap a SIGABRT signalled from the C library called through ctypes?
Paul McGuire
I have tried this now, and calling abort() in my C code does not signal SIGABRT to my handler in Python. So I'll have to set up my signal handler in the C code too. Thanks for the tips!
Paul McGuire