在C#中从C库中捕获出口(#)

时间:2010-08-31 13:43:00

标签: c# c exception

我使用C#使用以下语法来使用C库:

[DllImport("clib.so") static extern int func(char* foo);

我想知道是否有任何方法可以捕获C代码中出现的退出(#),以便在发生严重错误时重新加载库。

谢谢!

1 个答案:

答案 0 :(得分:3)

我相信exit()将终止进程而无需重新输入托管代码。您可以注册一个函数,以便在发生这种情况时通过P / Invoke事先调用atexit()来通知您。但是如果你从这里返回,这个过程仍然会退出。我想不会回来会让这个过程处于一个不确定的状态。您可能需要实现某种形式的进程隔离,并观察您的垂死库的进程退出。

http://msdn.microsoft.com/en-us/library/6wdz5232.aspx