首页 文章

正确关闭应用程序:TerminateProcess的替代方案

提问于
浏览
1

我正面临着 TerminateProcess() 功能的问题 . 应用程序我使用 CreateProcess() 来执行我的JobLauncher .

JobLauncher进程然后启动一个控制台程序(使用createprocess),该程序有效地执行作业可执行文件,等待其终止并监视持续时间,用户和内核时间等 .

为了从JobScheduler中删除作业,我首先开始使用TerminateProcess(),但它不允许我正确关闭可执行文件 . 我的意思是我发现无法挂钩任何终止事件 .

直到我找到比残酷的方式更好的方法,我在调用程序中使用 GenerateConsoleCtrlEvent() 编写了一个中间解决方案 .

在启动目标作业可执行文件的作业应用程序中,我使用 SetConsoleCtrlHandler() 安装了一个处理程序 . 在处理程序中,我可以终止作业的过程并正确地通知我的第三方 . 这是我现在找到的更好的解决方案 .

有没有更好的方法来编程并正确关闭流程?你这个解决方案是完全荒谬的吗?我不是“系统级”专业开发人员......

Z.

1 回答

  • 0

    这个熟知的Windows控制台问题,你可以找到一些解决方案here .

    我们在内部控制台实用程序上使用了名称"Kamikaze" . 它的工作原理如here,对我来说这是一个最好的解决方案,因为在Windows版本和Windows体系结构(x86,x64)之间移植没有问题 .

相关问题