为什么此代码在终止前不等待?

时间:2015-03-09 16:33:45

标签: c

为什么这个代码在我运行后立即终止?我认为应该在终止之前等待10秒钟?

#include<windows.h>
#include<stdio.h>
int main(){
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    CreateProcess("child.exe", NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
    WaitForSingleObject(pi.hProcess, 10000);
    TerminateProcess(pi.hProcess, 0);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    return 0;
}

1 个答案:

答案 0 :(得分:3)

也许CreateProcess失败了?

如果您的应用程序依赖于正在创建的子进程,则应添加异常或断言:

if (!CreateProcess("child.exe", NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
{
    assert(!"child.exe didn't run");
    return 1;
}