【发布时间】:2018-05-24 10:45:24
【问题描述】:
我从 c++ 代码创建了一个运行 python 脚本的进程。
STARTUPINFO si = {0};
PROCESS_INFOMATION pi = {0};
LPTSTR cmdArgs = _T("cmd.exe /k python myScript.py");
CreateProcess(NULL, cmdArgs, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
脚本无限循环运行,例如:
while (1):
print("hello")
我想终止该进程,但没有任何效果。
我尝试了TerminateProcess()、taskkill 和pid - 他们报告该进程已终止但它仍在运行。
如何在进程运行时终止进程?
【问题讨论】:
-
如果您有权访问代码,请添加外部终止条件(例如检测信号量或基于 IPC 的东西),这些条件会不时进行测试,并且可以从另一个应用程序设置...您也确定你要终止你想要的进程?你有足够高的特权吗?
-
什么代码? Python?我不能改变它。是的,具体流程我确定..
-
向我们展示如何使用 TerminateProcess 杀死它。
-
我的答案中使用的 @rety
TerminateProcess对我有用,简单的cmd也可以执行 inf 循环。只是一件愚蠢的事情,因为我不是 Python 编码器,但 Python 脚本不会创建另一个具有不同句柄的进程/线程吗? -
您创建
cmd.exe进程的错误,这是毫无意义的。您需要直接创建目标进程。杀死它,而不是 cmd
标签: c++ windows winapi process