ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

检测程序异常状态

2021-11-24 18:00:09  阅读:79  来源: 互联网

标签:waitprocess val int 检测 pid 程序 qWarning include 异常


通过wait来实现的。

#include <QCoreApplication>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
#include <errno.h>
#include <stdlib.h>
#include <QDebug>

struct test
{
    int val;
};
void waitprocess();

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    waitprocess();
    return a.exec();
}

void waitprocess()
{
    int count = 0;

    pid_t pid = fork();
    int status = -1;

    if(pid < 0)
    {
        qWarning()<<"创建进程失败";
    }
    else if(pid > 0)
    {
        qWarning()<<"父进程pid = "<<getpid();
        wait(&status);            //父进程执行到此,马上阻塞自己,直到有子进程结束。当发现有子进程结束时,就会回收它的资源。
        int res = WEXITSTATUS(status);
        qWarning()<<"子进程状态:"<<res;
        if (res != 1)
        {
            qWarning()<<"子进程死了";
            //下面可以进行其它操作了。
        }
        sleep(1);
    }
    else
    {
        qWarning()<<"子进程pid = "<<getpid();
        //下面可以放主程序,如果主程序死了,父进程就可以知道,并且做相关处理。
        test* t;
        t->val = 5;
        exit(1);

    }
}

标签:waitprocess,val,int,检测,pid,程序,qWarning,include,异常
来源: https://blog.csdn.net/weixin_43246170/article/details/121521200

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有