On Wednesday, 19 October 2022 at 16:48:10 UTC, Ali Çehreli wrote:
On 10/19/22 07:05, data pulverizer wrote:

> I am calling code from a C API, and would like to know how to
catch exit
> errors

If you are talking about the exit() Posix function, you can't do anything about that because its purpose is to cause "normal process termination".

Ali

Yes it is the `exit()` function in the end I figured that it couldn't be sidestepped like an exception so I did something else.

As it happens, the situation turned out to be a bit trivial, not even sure if it's worth going into. But for those interested the description is below.

I'm currently writing a D interop with R, the dynamic statistical programming language. There's a function called `Rf_initEmbeddedR()` which allows you to call the full R C API from D without having to compile a DLL and call code from R. There is also a function called `Rf_endEmbeddedR(int fatal)`, which I assumed terminates the R session, but it doesn't, after seeing the code it only cleans some things up and looks as if it is intended to be used just before you exit main.


I have unit tests in D that begin with the init function and finish with the end function, and when I tried re-initialising I get an exit() error saying the R session was already initialized. So all I did was create a static init flag, and a wrapper function to only call init if the flag is false.

As I said in the end it was trivial.

Reply via email to