2

我正在为 C 中的库编写容器服务器。

系统库dl,作为动态链接加载器,用于实现编程接口。那就是dlopen/dlsym函数。

要将控制权返回给容器服务器,可以使用return和。没关系exitreturn

但是exit()用户程序中的 in 也会导致容器服务器退出。

如何支持用户程序中的退出?

我正在考虑exit在调用动态链接加载器时覆盖该函数。

4

2 回答 2

1

也许您应该创建一个新的子进程来运行可能调用的库函数exit()。当库函数调用exit()或返回时,子进程会退出,父进程(容器服务器)会得到子进程终止的信息。

在这种情况下,启动新子进程的最简单方法是调用fork(). system()在这种情况下不需要使用调用。

于 2013-03-04T06:43:35.313 回答
1

由于您只是在编写一个库,因此如果没有进程调用它,它就无法自行运行。

一旦应用程序退出,你的库的状态也会不幸丢失。

换句话说,如果你想在应用程序退出后保持状态,你可能需要编写一个初始化守护进程,它始终是初始化这个库的第一个进程,并保持在后台运行,作为维持状态的一种手段。你的容器。

您还需要使用信号量或某种形式的 IPC 来确保状态在守护程序和使用此库的其他客户端进程之间传播。

于 2013-03-04T06:30:23.810 回答