【发布时间】:2011-02-14 01:14:56
【问题描述】:
我正在尝试编写一个程序,该程序从当前目录中的 MinGW 分发执行 make.exe,并利用其 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 和退出代码。但是当我在 make 上尝试时,上面的代码显示以下消息:
“OpenProcess(2032) 失败,错误:87”
我搜索了错误代码 87,它显示“参数无效”。我看不出像 2032 这样的正进程 ID 有什么无效的地方。有什么想法吗?
【问题讨论】:
标签: winapi makefile getlasterror openprocess