gpt4 book ai didi

linux - 像脚本一样调用可执行文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:52 25 4
gpt4 key购买 nike

我正在使用 C 开发 HTTP/1.1 服务器作为一种学习体验,并希望在保持动态的同时使其具有高性能。对静态文件或脚本执行获取或发布非常简单,但我想添加调用已编译二进制文件的功能以提高速度。

目前,我将这些已编译的二进制文件直接链接到服务器二进制文件中,但我希望能够更新和热交换它们。我考虑过将它们动态链接为共享库,但我不想重新链接它们来处理每个请求。我还考虑过创建一个新进程来运行它们,但是这会导致每个请求的开销很大,并且很难将响应返回给客户端(我使用的是 OpenSSL 套接字)。

我如何在更新时有效地重新链接这些已编译的二进制文件,而无需关闭服务器?

我正在 Debian Sid 上测试并在装有 CentOS 7 的 AWS ECS 实例上运行。两者都有 Linux 内核版本 4.19+

最佳答案

I'd like to be able to update and hot swap them. I considered dynamically linking them as shared libraries

您似乎相信您可以更新正在运行的服务器二进制文件当前正在使用的共享库(在磁盘上),并期望正在运行的服务器进程开始使用更新后的库。

不是共享库的工作方式。如果您尝试这样做,您的服务器进程要么崩溃,要么继续使用旧库(具体取决于您如何更新磁盘上的库)。

这可以在有限的情况下工作如果你使用dlopen加载库,如果你可以停止你的服务器,并让它dlclose 卸载以前加载的版本,然后 dlopen 更新版本。但是使这项工作的具体细节非常棘手。

关于linux - 像脚本一样调用可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com