首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让程序自动重启?(Linux进程)

如何让程序自动重启?(Linux进程)
EN

Stack Overflow用户
提问于 2011-11-29 05:07:51
回答 3查看 10.3K关注 0票数 17

我正在尝试让我的程序重新启动,但似乎什么都不起作用。我尝试使用fork(),但在终止parent进程后,child也被终止。

代码

代码语言:javascript
复制
void sigup_handler(int signum) {
    int pid = fork();
    if (pid == 0) {
        execve("prog2", NULL); 
    }
    else
        kill(getpid(), SIGTERM);
}

int main() {
    puts("Program 2 started.");
    signal(SIGHUP, sigup_handler);
    sleep(50); 
    puts("Program 2 terminated.");
    return 0;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-29 05:11:23

如果您只是要kill parent,为什么还要费心使用parent呢?只需执行exec即可。程序的新实例仍将是相同的进程,但将有效地重新启动。

票数 14
EN

Stack Overflow用户

发布于 2011-11-29 05:12:31

使用2级分叉。一个家长的“监控”应用程序,分叉孩子并监控他们的状态。如果一个孩子死了,监视器会启动一个新的。然后,孩子们自己做叉子,做他们必须做的任何事情。

但是,如果你不需要应用程序的新副本与被终止的副本具有相同的状态,那么使用exec()启动一个新的独立副本可能是一个更好的选择,这样可以省去让监视器副本闲置的麻烦。

票数 5
EN

Stack Overflow用户

发布于 2016-01-15 15:58:11

您可以先使用daemon(3),然后使用execve(2)

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

https://stackoverflow.com/questions/8302323

复制
相关文章

相似问题

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