我正在为 C 中的库编写容器服务器。
系统库dl,作为动态链接加载器,用于实现编程接口。那就是dlopen
/dlsym
函数。
要将控制权返回给容器服务器,可以使用return
和。没关系exit
。return
但是exit()
用户程序中的 in 也会导致容器服务器退出。
如何支持用户程序中的退出?
我正在考虑exit
在调用动态链接加载器时覆盖该函数。
我正在为 C 中的库编写容器服务器。
系统库dl,作为动态链接加载器,用于实现编程接口。那就是dlopen
/dlsym
函数。
要将控制权返回给容器服务器,可以使用return
和。没关系exit
。return
但是exit()
用户程序中的 in 也会导致容器服务器退出。
如何支持用户程序中的退出?
我正在考虑exit
在调用动态链接加载器时覆盖该函数。
也许您应该创建一个新的子进程来运行可能调用的库函数exit()
。当库函数调用exit()
或返回时,子进程会退出,父进程(容器服务器)会得到子进程终止的信息。
在这种情况下,启动新子进程的最简单方法是调用fork()
. system()
在这种情况下不需要使用调用。
由于您只是在编写一个库,因此如果没有进程调用它,它就无法自行运行。
一旦应用程序退出,你的库的状态也会不幸丢失。
换句话说,如果你想在应用程序退出后保持状态,你可能需要编写一个初始化守护进程,它始终是初始化这个库的第一个进程,并保持在后台运行,作为维持状态的一种手段。你的容器。
您还需要使用信号量或某种形式的 IPC 来确保状态在守护程序和使用此库的其他客户端进程之间传播。