如何让程序重新启动?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我试过使用fork(),但是在这个 parent过程之后child被杀死了:

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;
}
提问于
用户回答回答于

为什么与麻烦fork,如果你只是去kill parent?只要做exec。该程序的新实例将仍然是相同的过程,但将有效地重新启动。

用户回答回答于

如果你不需要应用程序的“新”副本具有与被杀死的状态相同的状态,那么使用exec()启动新的独立副本可能是更好的选择,可以让你不必拥有监视器副本存在。

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券