在98下createprocess,执行一个命令行应用程序比如xcopy,然后waitforsingleobject,会发现命令运行完毕了,但就是不退出,一直返回STILL_ACTIVE.
这种情况只是在执行应用程序才会发生,执行内部命令如dir,cd都不会发生
大家遇到这种情况吗?如何解决的

解决方案 »

  1.   

    HANDLE hProcess;
    LPTSTR lpFileName;
    CString strExeFileName;
    STARTUPINFO stStartUpInfo;
    PROCESS_INFORMATION procinfo; //进程的信息

    strExeFileName ="C:\\Windows\\Notepad.exe";
    memset(&stStartUpInfo, 0, sizeof(STARTUPINFO));

    lpFileName = strExeFileName.GetBuffer(strExeFileName.GetLength());
    CreateProcess(NULL, lpFileName, NULL, NULL, FALSE,
    NORMAL_PRIORITY_CLASS, NULL, 
    NULL, &stStartUpInfo, &procinfo);
    hProcess = procinfo.hProcess;

    strExeFileName.ReleaseBuffer();
    WaitForSingleObject(hProcess,INFINITE);// 等待进程结束
    ::MessageBox(NULL,"Process Closed","aaa",0);
      

  2.   

    98和2K操作系统在本质上是不一样的。
    1、16位和32位的是不一样的(这是废话)
    2、98和2K的线程调度不一样(这是你问题的所在吧)在9X系统下,是当线程取得CPU控制权时不会
    主动交出的(如果你的程序有死循环的话,非常容量死机的)而且在2K下,线程的调度分为三个队列
    只不过每个队列的线线程执行的时间不一样,到时间都得交出来CPU的控制权
    3、先列出2个,(多的你自已找本操作系统的书看看)
      

  3.   

    情况是进程已经结束了,但不知道是否是command.com的问题, wait总是返回超时,能解决吗?
      

  4.   

    command.com 有问题,如果用command /c可以解决,但取不到进程的返回值