Я пытаюсь написать программу, которая выполняет make.exe из дистрибутива MinGW в текущем каталоге и использует его данные STDOUT и код выхода. У меня есть дескриптор для обработки STDOUT, откуда я беру данные, созданный с помощью CreatePipe. Когда я получаю ERROR_HANDLE_EOF на этом канале, я предполагаю, что процесс завершился, и пытаюсь получить его код выхода:
if(session->pid == 0) return;
HANDLE hp = OpenProcess(PROCESS_QUERY_INFORMATION |
PROCESS_TERMINATE, TRUE, session->pid);
if(hp == NULL) {
printf("OpenProcess(%i) failed, error: %i\n",
session->pid, (int)GetLastError());
return;
}
Мой код работает со всеми другими утилитами MinGW, которые я тестировал (например, pwd, ls и т. Д.), Я без проблем получаю STDOUT и код выхода. Но когда я пробую это сделать, в приведенном выше коде отображается следующее сообщение:
«OpenProcess (2032) не удалось, ошибка: 87»
Я поискал в Google код ошибки 87, и там написано: «Недопустимый параметр». Я не понимаю, что может быть недействительным в положительном идентификаторе процесса, таком как 2032. Есть идеи?