开发者

Exception handling in linux

开发者 https://www.devze.com 2023-03-31 14:00 出处:网络
I am porting a Windows program on Linux. My program uses the Windows structured exception handling (SEH). Lin开发者_开发问答ux does not support structured exception handling, however it provides signa

I am porting a Windows program on Linux. My program uses the Windows structured exception handling (SEH). Lin开发者_开发问答ux does not support structured exception handling, however it provides signal handling. We can override signal to develop SEH like paradigm.

Once you are able to filter the exception Windows provides three alternatives execution control flows:

1) EXCEPTION_EXECUTE_HANDLER : Execute handler 2) EXCEPTION_CONTINUE_SEARCH : Forward the exception to next block (if not exist then to OS) 3) EXCEPTION_CONTINUE_EXECUTION : Continue exception from the instruction where interrupt has occured.

How can I achieve this control flows in Linux. In Linux once you handle the signal, program starts execution from where it has been interrupted. How to develope continue_search and execute_handler paradigms?

Thanks in advance


There is no easy way to do what you want here in C++. Your tools are the standard C++ exception mechanism, and sigaction. A sigaction handler can return control to where it left off. It can throw, though there has been controversy about the safety of this. Some would say that it has to set an atomic variable and return. (The problem being that the compiler sees no possibility of a throw and so doesn't prepare for it.)

If you are working in C, you have additional complex options involving sigsetjmp, which is more or less goto on steroids, risks and all.

Since you haven't specified a language, or what exceptional condition you are trying to deal with, it's not practical to offer a more specific recipe.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号