Windows:终止进程:错误\u无效\u句柄
我试图在我的子进程上调用TerminateProcess(只是在子进程陷入死锁或某些激烈事件时用作安全机制),但我得到了错误\u无效\u处理程序 我尝试过使用进程设置,但没有效果。如果我在CreateProcess()之后调用TerminateProcess(),则调用确实有效Windows:终止进程:错误\u无效\u句柄,windows,terminate,createprocess,Windows,Terminate,Createprocess,我试图在我的子进程上调用TerminateProcess(只是在子进程陷入死锁或某些激烈事件时用作安全机制),但我得到了错误\u无效\u处理程序 我尝试过使用进程设置,但没有效果。如果我在CreateProcess()之后调用TerminateProcess(),则调用确实有效 BOOL ret; HANDLE hProcess; hProcess = OpenProcess(PROCESS_TERMINATE, FALSE,
BOOL ret;
HANDLE hProcess;
hProcess = OpenProcess(PROCESS_TERMINATE,
FALSE,
pid);
if (hProcess = NULL) {
debug("Error: OpenProcess failed: %d", GetLastError());
return -1;
}
ret = TerminateProcess(hProcess, 1);
CloseHandle(hProcess);
if (!ret) {
debug("Error: TerminateProcess failed: %d", GetLastError());
return -1;
}
else return 0;
我得到错误6,无效的句柄异常。我仔细检查了pid是否正确(它与任务管理器中的内容匹配)。唯一可能的错误可能是如何使用OpenProcess()获取句柄。我尝试使用PROCESS\u ALL\u访问,但效果不佳
有人知道会出什么问题吗
编辑:犯了这么愚蠢的错误!我将NULL赋值给hProcess(“=”而不是“=”)
抱歉发了这封信
if (hProcess = NULL)
这是一个赋值而不是一个条件,请将“=”更改为“=”if()语句将NULL赋值给hProcess。改用==运算符。并在失败后立即调用GetLastError(),而不是在CloseHandle()之后。“我得到的错误处理程序无效”。不,您得到的是“我得到错误\无效\句柄”。谢谢,我注意到我的错误,有时很难看到(不只是看那些行)。谢谢你的帮助,谢谢!