LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 872|回复: 6

如何在程序中动态的加载并且调用另一个编译好的函数?

[复制链接]
发表于 2007-3-5 11:25:18 | 显示全部楼层 |阅读模式
比如有一个C源文件,里面只有一个函数;我把它编译好后(不打包成.a或者.so)如何在另一个程序中动态的加载并且调用这个函数?
发表于 2007-3-5 11:43:58 | 显示全部楼层
编译链接成so
然后用dlopen打开,dlsym找到函数,调用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-5 13:20:19 | 显示全部楼层
我不想打包成so可以吗?
回复 支持 反对

使用道具 举报

发表于 2007-3-5 13:57:16 | 显示全部楼层
so 怎么成了包了,而且它作为动态链接库,就是为了让别人动态调用这一目的而存在的,楼主却偏偏不要,有什么特殊的原因吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-5 15:17:15 | 显示全部楼层
Post by DoDo
so 怎么成了包了,而且它作为动态链接库,就是为了让别人动态调用这一目的而存在的,楼主却偏偏不要,有什么特殊的原因吗?

不好意思,经常写java,说包成习惯了

我在做一个HTTP服务器,现在要实现session机制,服务器主程序负责管理session,cgi程序可以得到相应的session然后提取一些信息或者可以向session里存值供以后提取;

原来我是用fork() + execvp来执行cgi程序,但是这样cgi在向session里存值的话只在当前子程序中有效,子程序退出后原来存的值就没有了;这样下次cgi再去取相应的session是得不到原来存进去的值;

我不希望把所有的cgi都打成so而是只需编译好就可以让服务器去调用了
虽然感觉ipc也许可以实现,但是总感觉既麻烦又昂贵,希望用最简单的办法
回复 支持 反对

使用道具 举报

发表于 2007-3-5 16:40:17 | 显示全部楼层
我想这样的结构还是设计成 C/S 结构比较好,由一个一直运行的 Server 来维护 session,其开销确实不小,但如果能够合理利用共享内存,不知道会不会有所改善。

至于楼主的想法,让一个程序在不同的生命周期内共享数据,在下才疏学浅,但隐约地感觉这是很难办到的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-6 09:44:22 | 显示全部楼层
is there any way to execute new program as invoking main function dynamically?

I mean I hope I can execute new program like calling one of the exec functions,
but dont hope it replacing the current process its text, data, heap, and stack segments;
just want to execute a new program like invoking a function.

how to do? any idea is appreciated.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表