繁体   English   中英

在C / C ++ Windows中终止进程

[英]termination of process in C/C++ windows

我试图赶上进程结束的时间(例如通过在taskmanager中杀死它)。 以便在退出前做一些工作时(在已结束的进程内部)检测到。 我的应用程序并没有结束(无限循环)

我试过了:1)atexit 2)SetUnhandledExceptionFilter

我尝试在调试运行中简单地关闭正在运行的应用程序,但最终并没有执行额外的任务。

救命,

这应该可以回答您的问题:

在任务管理器中有两种杀死应用程序的方法。

通过“应用程序”选项卡杀死将大致等同于SIGTERM(在Linux中)。 应用程序可能会拦截它并进行更多处理,因为它基本上是在发送“关闭窗口”消息。 捕获的消息是WM_CLOSE。

通过“进程”选项卡杀死将大致等同于SIGKILL(在Linux中)。 除了监视任务管理器的列表框和“结束进程”按钮中用户的操作,或者没有监视程序可以看到第一个进程被杀死时,您无法采取任何措施来拦截它

枚举所有正在运行的进程。 完成后,您将获得进程ID。 通过先前获得的ID获取每个进程的句柄,然后找到您要查找的进程。 在单独的线程中使用相同的进程句柄,如下所示:

WaitForSingleObject(hProcess,INFINITE);

一旦进程终止,该线程将结束。

在控制台应用程序中,您应该考虑安装HandlerRoutine回调函数以捕获CTRL_C_EVENT,CTRL_BREAK_EVENT,CTRL_CLOSE_EVENT,CTRL_LOGOFF_EVENT,CTRL_SHUTDOWN_EVENT。

在GUI应用程序中,您应该考虑处理WM_CLOSEWM_QUERYENDSESSIONWM_ENDSESSION

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM