zoukankan      html  css  js  c++  java
  • Windows API 25篇 TerminateProcess

    导语:结束一个进程的方法通常有:exit(), ExitProcess, TerminateProcess. 通常一个进程在正常情况下结束的话,系统会调用 ExitProcess函数结束进程,但有时候想强行杀掉一个进程的话就必须调用TerminateProcess函数了,TerminateProcess强行关掉一个进程后,并没有做内存对象资源的清理,这样有时候会导致内存泄漏,他和ExitProcess是一样的,通常系统会调用exit函数,exit函数会清理全局的对象资源,然后调用ExitPeocess结束进程。

    函数定义:
    BOOL TerminateProcess(
                                             HANDLE hProcess, // handle to the process,进程句柄
                                             UINT uExitCode   // exit code for the process,传递给进程的退出码
                                            );
    参数说明:
            第一个参数不说了,关于第二个参数是我们要传递给结束进程的退出码,这样可以调用GetExitCodeProcess函数可以得到这个退出码。

           使用此函数必须有PROCESS_TERMINATE权限,否则会失败,下面举例说明强行结束当前进程,不过通常状况下不适用此函数结束当前进程,以免造成内存泄漏:

    void main()
    {
        DWORD dwPID = GetCurrentProcessId();
        HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwPID);
        if (NULL == hProcess)
            return ;
    
        BOOL bExit = TerminateProcess(hProcess, 0);
        if(!bExit)
        {
             //GetLastError();    
         }
        //如果成功就会造成hProcess句柄没有关闭,内核对象没有释放
    }
    
  • 相关阅读:
    查询详细信息和删除记录
    软件开发过程中常用到的一些工具
    无服务器端的UDP群聊功能剖析(WCF版)
    vim插件使用
    C#中ConnectionStrings和AppSettings的区别
    《Effective C++》简明笔记上
    设计模式的一些所想所得
    对RESTful Web API的理解与设计思路
    js加载脚
    OSGi.NET 学习笔记 [模块可扩展支持][概念][实例]
  • 原文地址:https://www.cnblogs.com/priarieNew/p/9755794.html
Copyright © 2011-2022 走看看