监控c中的主要应用程序

时间:2012-07-17 01:00:43

标签: c multithreading process kernel

我已经完成了我的程序mainApp,它拥有main()方法,而main()创建了5个线程,线程做了一些操作......等等。

现在我只想知道我的程序是否崩溃。所以我要监视我的mainApp是否正在工作或停止。如果停止我将重启/重启整个系统。

mainApp和监控程序必须同时运行,监控程序应该检查mainApp的状态。

任何建议请。

PS:我的linux内核2.6.29。

1 个答案:

答案 0 :(得分:2)

除非您需要通用监视器,否则您的程序可以监视自己。

程序首次启动时,程序本身就是监视器。由于程序刚刚启动,因此没有“mainApp”运行,因此它会自行关闭。子进程承担“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;
}