Я пытаюсь написать программу, которая выполняет 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"
Я погуглил для кода ошибки 87, и он говорит "Неверный параметр". Я не понимаю, что может быть недопустимым в положительном идентификаторе процесса, таком как 2032. Есть идеи?