首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化流程重新启动

优化流程重新启动
EN

Stack Overflow用户
提问于 2013-09-20 10:52:58
回答 1查看 47关注 0票数 0

我需要重复地重新启动一个进程(本身)。想知道有没有什么我可以做的来避免全员执行。初始化和未初始化的数据段初始化发生在哪里?它是发生在内核空间中,还是在libc中,还是在装载器中?我可以做些什么来利用这样一个事实,即它是我每次执行的相同的二进制文件(与运行的二进制文件相同)?

EN

回答 1

Stack Overflow用户

发布于 2013-09-20 11:43:47

我不知道这是不是你想要的--“重复地重新启动”不太清楚--但是exec很容易避免。

因为你已经在程序映像中,你想要重新启动,你只需要fork新的拷贝。你可以有一个主副本,它的职责之一是派生子程序,让子程序运行构成真正功能的实际程序代码。类似于:

代码语言:javascript
复制
while ((! done)
{
    //wait on signal, fifo, socket, whatever

    if (somethingSaysWeAreDone)
        exit(0);

    if (fork == 0)
        break;
}

//children execute the rest of the program

每个孩子都有一个干净的分段,而不是一个或两个变量,在这些变量之上他们无论如何都不需要。我看不到任何可以避免分支的方法,显然你需要某种机制来与它应该复制的“主”副本进行通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18908100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档