1
我使用C#中使用以下語法消耗C庫:在C#中捕捉從C庫退出(#)
[DllImport("clib.so") static extern int func(char* foo);
我想知道是否有任何的方式來捕捉退出(#)發生在C代碼中,所以如果發生嚴重錯誤,我可以重新加載庫。
謝謝!
我使用C#中使用以下語法消耗C庫:在C#中捕捉從C庫退出(#)
[DllImport("clib.so") static extern int func(char* foo);
我想知道是否有任何的方式來捕捉退出(#)發生在C代碼中,所以如果發生嚴重錯誤,我可以重新加載庫。
謝謝!
我相信exit()會終止進程而不會重新輸入托管代碼。可能您可以註冊一個函數,以便在發生這種情況時通過事先通過P/Invoke調用atexit()來通知您。但是如果你從這裏返回,這個過程仍然會退出。我想不返回會使進程處於不確定狀態。您可能需要實施某種形式的進程隔離並監視瀕死庫的進程退出。
+1對於「瀕死」和合理的解決方案 – StingyJack 2010-08-31 14:27:43