我需要反复(自行)重新启动一个进程。想知道我是否可以做些什么来避免完全执行。初始化和未初始化的数据段初始化发生在哪里?它发生在内核空间或libc或加载程序中吗?我能做些什么来利用它与我每次执行的二进制文件(与运行的二进制文件)相同的事实吗?
问问题
47 次
1 回答
0
我不知道这是否是您想要的-“自行反复重新启动”尚不清楚-但exec
很容易避免。
由于您已经在程序映像中,您想要重新启动您只需要fork
新副本。您可以拥有一个主副本,其一项职责是分叉子代并让子代运行构成真正功能的实际程序代码。就像是:
while ((! done)
{
//wait on signal, fifo, socket, whatever
if (somethingSaysWeAreDone)
exit(0);
if (fork == 0)
break;
}
//children execute the rest of the program
每个孩子都有一个干净的片段,除了他们永远不需要的一两个变量之外。我看不出有什么办法可以避免分叉,显然你需要某种机制来与它应该复制的“主”副本通信。
于 2013-09-20T03:43:47.253 回答