我的程序mainApp拥有main()方法,main()创建了5个线程,线程执行一些操作。。等等。
现在我只想知道我的程序是否崩溃。所以我要监视我的主应用程序,不管它是工作还是停止。如果停止,我将重新启动/重新启动整个系统。
主应用程序和监控程序必须同时运行,监控程序应检查主应用程序的状态。
有什么建议吗。
PS:IMOMLinux内核2.6.29。

最佳答案

除非您想要一个通用监视器,否则您的程序可以监视自身。
当程序第一次启动时,程序本身就是监视器。由于程序刚刚启动,没有“主应用程序”在运行,所以它自己分叉。子进程承担“mainApp”的角色。监视器现在等待子进程死亡。当子进程终止时,它检查状态,并确定是否重新启动,然后再次分叉。

int main () {
    /*...startup...*/
    int status;
    bool restart = true;
    while (restart) {
        pid_t pid = fork();
        switch (pid) {
        case -1: /* handle error */ exit(EXIT_FAILURE);
        case 0: exit(mainApp());
        default: break;
        }
        pid_t child = wait(&status);
        assert(child == pid);
        restart = check_status(status);
    }
    /*...cleanup...*/
    return 0;
}

关于c - 监视c中的主应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11514703/

10-12 16:24