一種反射機制

今天看dtc代碼,有這樣的一種實現,感覺還挺巧妙的。
先說過程,再說好處:

char *so = ...//讀取配置文件,得到so的文件名
void* dll = dlopen(so, RTLD_NOW|RTLD_GLOBAL);//打開so
char *fun; //讀取配置文件得到,得到方法名
typedef uint64_t (*fun_interface)(const char *key, int len, int left, int right);
fun_interface *foo= (fun_interface)dlsym(dll, fun);//得到函數指針
foo(a,b,c,d)//直接調用上述的foo就可以調用so裏的函數了

這種實現的有點在於,不需要改變現有代碼的情況下,修改so的代碼,重新編寫so,然後重新配置配置文件就可以實現函數的變換。

以後我可以在什麼地方使用這種代碼編寫呢?
1. 比如加解密的場景中可以使用,我們可以編寫好函數接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章