2015-03-09 3 views
0

Почему этот код заканчивается сразу после запуска? Я думаю, что он должен ждать 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; 
} 
+0

Как долго 'child.exe' работает для? – lcs

+3

Второй параметр 'WaitForSingleObject' - это только время ожидания. Он немедленно возвращается, как только он получает результат, успех или неудачу. – sp2danny

+1

Всегда проверяйте результат выполнения функций. – alk

ответ

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; 
} 
+0

спасибо luchian – thanh

+0

@thanh, если child.exe не запускается, вам нужно выяснить, почему это происходит. Где находится этот файл? Является ли он в том же каталоге, что и ваше основное приложение? Можете ли вы начать эту программу самостоятельно? –

+0

спасибо за вашу помощь Я решил проблему – thanh

Смежные вопросы