我有這個程序,我希望其他進程能夠調用函數(通過unix套接字)。消息協議非常簡單,函數名稱,函數簽名和保存參數的緩衝區(char *)。C RPC沒有存根
當我的程序中的某個模塊想要允許某個功能可訪問時,它會在庫中註冊名稱和簽名。我面臨的問題是在請求進來後,物理上調用函數。我已經查看了RPC和Java RMI類庫,但這些需要我生成存根以包裝調用。我正在使用的系統非常有活力,我還必須與其他人無法修改的代碼進行交互。
因此,基本上,一個函數可能看起來像:
// func ptr name signature
REG_FUNCTION(somefunc, "somefunc", "i:id");
當請求到來時,我做了一些錯誤檢查,一旦有效我想:
int somefunc(int someparam, double another)
{
return 1234;
}
現在我與圖書館登記調用該函數。所以我有變量:
void * funcptr = (the requested function);
char * sig = (the function signature);
char * params = (a buffer of function parameters);
//note that the params buffer can hold data types of arbitrary lengths
如何使用C中的參數調用函數?
謝謝!
你需要什麼簽名?客戶端調用函數還是將請求傳遞給包含somefunc的庫?一些澄清將有所幫助! – dirkgently 2009-04-09 06:45:41