2015-08-08 101 views
0

我正在linux中使用'dlopen'插件系統。這是一個在插件之間傳輸數據(JSON)的中央應用程序。 我們可以使用try-catch子句處理拋出的異常。我的問題是關於終止程序的錯誤,如分段錯誤。如何防止終止整個應用程序的插件故障中的一個?如何防止插件中的崩潰影響主程序(dlopen)

我可以用叉子做點什麼嗎?我從來沒有使用叉,我不知道如果我可以在分叉進程和主進程之間傳輸數據? 或者我不能使用dlopen fr這樣的事情,我必須使用另一種方法?

謝謝。

+1

如果可以的話,您不能輕鬆分離信號處理。信號處理程序是全過程的,所以即使您使用'sigsetjmp/siglongjmp'來處理代碼中的SIGSEGV,例如,您仍然會影響整個過程 - 同時讓整個過程影響您的代碼。 –

回答

1

據我所知是安全的唯一方法是在serparate運行插件 進程,以及在管道或你使用JSON這樣你的數據已經系列化插座等

與他們溝通,你需要編寫一個加載插件的插件,並處理預存在的插槽。

+0

是啊,我也想到套接字。我只是想看看是否有解決信號的方法... – ajlajlajl

+0

帶外信號可能在插座上。我不確定細節。 – Jasen