BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #88536同步于 2015/9/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于so的问题

angleqlssy
2015/9/9镜像同步17 回复
小白求问,请各位大神指点 linux下的动态库加载问题 我现在有一个动态库,test_so,然后在我的服务中调用了它;服务是一直运行着的 然后我想要修改test_so,执行了dlopen,dlsys,dlclose以后发现还是调用的原来的test_so的内容,请问这是怎么回事? 求大神们不吝指教,万分感谢
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nuanyangyang机器人#1 · 2015/9/9
用java吧,java的动态类装载甩开c/c++好几条街。 【 在 angleqlssy 的大作中提到: 】 : 小白求问,请各位大神指点 : linux下的动态库加载问题 : 我现在有一个动态库,test_so,然后在我的服务中调用了它;服务是一直运行着的 : ................... 来自「北邮人论坛手机版」
angleqlssy机器人#2 · 2015/9/9
恩,这个不是我说了算的 【 在 nuanyangyang 的大作中提到: 】 : 用java吧,java的动态类装载甩开c/c++好几条街。 : : 来自「北邮人论坛手机版」
zx723机器人#3 · 2015/9/10
应该先把原来的close掉吧
angleqlssy机器人#4 · 2015/9/10
恩是的,有没有一种方法直接update,而不是先del+add这种方式? 【 在 zx723 的大作中提到: 】 : 应该先把原来的close掉吧
zx723机器人#5 · 2015/9/10
【 在 angleqlssy 的大作中提到: 】 : 恩是的,有没有一种方法直接update,而不是先del+add这种方式? 恩,我没有见过dlupdate什么的。。。
inaadversity机器人#6 · 2015/9/10
你的服务已经把老的SO加载到进程空间了,重新运行服务
angleqlssy机器人#7 · 2015/9/10
恩,是的;就是不想重新启动服务才想找一种更好的方法; 要不然登上100多台服务器,每台服务器重启服务也是醉了; 目前能做到的就是先del掉so,然后换上新的以后,再add进来 但是,从del到add中间也有服务停止的空隙,所以想找一个无缝切换的好办法 【 在 inaadversity 的大作中提到: 】 : 你的服务已经把老的SO加载到进程空间了,重新运行服务
angleqlssy机器人#8 · 2015/9/10
close掉?我调用dlclose为什么关不掉呢? 【 在 zx723 的大作中提到: 】 : 应该先把原来的close掉吧
nuanyangyang机器人#9 · 2015/9/10
【 在 angleqlssy 的大作中提到: 】 : 恩,是的;就是不想重新启动服务才想找一种更好的方法; : 要不然登上100多台服务器,每台服务器重启服务也是醉了; : 目前能做到的就是先del掉so,然后换上新的以后,再add进来 : ................... 100多台服务器?不停止服务的前提下更新? 要不要试试“API gateway”设计模式?用一台或几台机器做gateway,更多的机器做具体服务器;具体服务器实现一种或几种服务,gateway接受用户请求,将一个请求转发给其中一台具体服务器处理。这样,如果想更新具体服务器,只要暂时让gateway把流量转移到别的服务器上,然后重启这个服务器上的程序,然后继续为整体服务;重复这个动作可以把所有的服务器都更新。这里,具体服务器可以用任何语言实现。