小弟在自己的程序中CreateProcess了一个进程,若是这个子进程Crash了我的进程如何得知?谢谢指点了!!!!

解决方案 »

  1.   

    用WaitForSingleObject进行跟踪判断
      

  2.   

    启动子进程的时候获得子进程的handle,
    然后用WaitForSingleObject等待子进程退出时handle的返回,就可以判断子进程退出了
      

  3.   

    是那个Create的进程崩掉了(不是退出)我的程序怎么得知?需不需要截获什么消息啊?
      

  4.   

    这样好了,在主进程里面定时检查,如果发现子进程没了,而且又没有收到子进程正常退出的通知,那就是说明子进程crash了
      

  5.   

    我刚刚做了一个小测试了一下,可以运行,现在贴出来给,大家指导了,
    PROCESS_INFORMATION information;

    STARTUPINFO info;
    ZeroMemory(&info, sizeof(STARTUPINFO)); info.cb = sizeof(STARTUPINFO);
    info.dwFlags = STARTF_USESHOWWINDOW;
    info.cbReserved2 = NULL;
    info.lpReserved = NULL;
    info.lpReserved2 = NULL; BOOL vb = CreateProcess(NULL, "test.exe", NULL,    //这里的test.exe你随便找个就可以了
    NULL, true, 0, NULL, NULL, &info, &information); if(!vb)
    {
    cout<<"failed to create!"<<endl;
    return 0;
    }
    while(1)
    {
    HANDLE hand = OpenProcess(PROCESS_ALL_ACCESS, NULL, information.dwProcessId);
    if(!hand)
    {
    cout<<"child thread is dead"<<endl;
    return 0;
    }
    Sleep(1000);
    }
      

  6.   

    用oyljerry(☆勇敢的心☆-要开始写论文了) ( ) 的方法应该是可行的
      

  7.   

    To:linxy2002(阿郎)你的方法我试过了,还是不行啊~~~!当子进程崩调时系统会弹出一个发送错误信息的对话框,在此时及之后OpenProcess函数都可以返回句柄,而且每次都不一样。我是想怎么样才能使我的程序得知子进程Crash了?如果能不让系统弹出那个框我自己做处理更好!Anyway,thank you!大家继续讨论啊~~!!
    小弟先谢过了~~~