gpt4 book ai didi

c++ - 杀死一个在无限循环中运行的进程

转载 作者:行者123 更新时间:2023-11-28 04:39:41 25 4
gpt4 key购买 nike

我从运行 python 脚本的 c++ 代码创建了一个进程。

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()taskkillpid - 他们报告该进程已终止但它仍在运行。

如何在进程运行时终止进程?

最佳答案

LPTSTR cmdArgs = _T("cmd.exe /k python myScript.py");
CreateProcess(NULL, cmdArgs, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

此代码创建 cmd.exe 进程并创建 python.exe 进程。问题 - 为什么创建中间 cmd.exe ?!你需要直接启动python.exe。使用 "python myScript.py" 命令行并直接启动 python.exe(如果使用 unicode W api 和空应用程序名称 - 字符串不得是只读的(在你的代码中它是只读的 - 所以你使用 A api,否则你会得到异常))

TerminateProcess 不起作用 - 因为您有 cmd.exe 的句柄并且您可以终止它。但不是 python.exe

taskkill with pid - they report that process terminated but it still running.

当然 - pid 属于 cmd.exe 并且它终止了。但 python.exe 仍在运行。

所以再次 - 解决方案非常简单 - 直接执行目标进程,没有 cmd.exe

关于c++ - 杀死一个在无限循环中运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50507351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com