簡體   English   中英

c++動態庫segfault

[英]c++ dynamic library segfault

我正在 c++ 中編寫網絡應用程序,我想啟用插件,但我不知道該怎么做,以保護我的應用程序免受段錯誤之類的錯誤。 例如:我有接口:

class IPlugin{
public:
  IPlugin();
  virtual ~IPlugin();
  virtual void callPlugin() = 0;
}

有人會寫動態庫:

class Plugin : public IPlugin{
public:
  Plugin();
  virtual ~Plugin();
  virtual void callPlugin();
}

void Plugin::callPlugin(){
  int* a = NULL;
  *a = 5;
}

在我的應用程序中調用此 function 將以終止一切結束。 我知道可以用fork(),但是插件里面的函數會很短,會用到很多次,所以我覺得fork()太慢了。 有任何想法嗎?

PS。 對不起我的英語。

試圖保護您免受錯誤代碼加載到您的地址空間中,這是一場失敗的戰斗。 這些插件可能會造成您永遠無法恢復的真正損害。

要么接受一個有缺陷的插件會導致你的應用程序崩潰的事實,要么你必須按照你的建議將插件隔離在一個單獨的進程中。 但是你只需要調用一次fork,當你加載插件時,不用擔心會很慢。 真正的工作將是使用某種形式的 IPC 與您的應用程序中的插件進行通信 - 管道可能是合適的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM