Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows:终止进程:错误\u无效\u句柄_Windows_Terminate_Createprocess - Fatal编程技术网

Windows:终止进程:错误\u无效\u句柄

Windows:终止进程:错误\u无效\u句柄,windows,terminate,createprocess,Windows,Terminate,Createprocess,我试图在我的子进程上调用TerminateProcess(只是在子进程陷入死锁或某些激烈事件时用作安全机制),但我得到了错误\u无效\u处理程序 我尝试过使用进程设置,但没有效果。如果我在CreateProcess()之后调用TerminateProcess(),则调用确实有效 BOOL ret; HANDLE hProcess; hProcess = OpenProcess(PROCESS_TERMINATE, FALSE,

我试图在我的子进程上调用TerminateProcess(只是在子进程陷入死锁或某些激烈事件时用作安全机制),但我得到了错误\u无效\u处理程序

我尝试过使用进程设置,但没有效果。如果我在CreateProcess()之后调用TerminateProcess(),则调用确实有效

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()之后。“我得到的错误处理程序无效”。不,您得到的是“我得到错误\无效\句柄”。谢谢,我注意到我的错误,有时很难看到(不只是看那些行)。谢谢你的帮助,谢谢!